Afhjælp problemer ved hjælp af GitHub Copilots agenttilstand
Efter at have analyseret sikkerhedsproblemer med Ask-agenten, er du klar til at implementere rettelser. GitHub Copilot's Agent gør det muligt for dig at udføre komplekse udbedringsopgaver sikkert, samtidig med at funktionaliteten bevares og kodekvaliteten forbedres.
Notat
Overvej at bruge Ask-agenten til at analysere sikkerhedsproblemer og udarbejde en afhjælpningsplan, før du bruger agenten til at implementere ændringer. Denne tilgang sikrer, at refactoring udføres omhyggeligt og sikkert.
Hvad er agenttilstand?
GitHub Copilot's agenttilstand er en af tre indbyggede agenter i GitHub Copilot Chat. I modsætning til Ask-agenten, som giver vejledning og forslag i chatpanelet, implementerer Agent-tilstand ændringer som redigeringer direkte i dine kodefiler.
Agenttilstandsfunktioner omfatter:
- Redigering af filer med præcise kodeændringer.
- Anvendelse af ændringer på tværs af flere filer samtidigt.
- Kørsel af tests for at bekræfte ændringer.
- Udførelse af kommandoer baseret på dine instruktioner.
- Forstå projektkontekst og afhængigheder.
- Opretholdelse af ensartethed på tværs af kodebasen.
Agenttilstand er ideel til implementering af sikkerhedsrettelser i flere trin, der kræver omhyggelig håndtering af afhængigheder, edge-sager og test. Den fastlægger automatisk den nødvendige kontekst og udfører de nødvendige trin for at nå dine udbedringsmål.
Agenttyper til sikkerhedsafhjælpning
GitHub Copilot tilbyder flere agenttyper, der kører i forskellige miljøer. For sikkerhedsudbedringsarbejdsgange er de to mest relevante typer:
- Lokal agent (Agent i VS Code): kører interaktivt i editoren med fuld adgang til dit arbejdsområde, værktøjer og modeller. Dette er den agenttype, der beskrives gennem hele denne enhed — ideel til praktisk, trin-for-trin sikkerhedsafhjælpning, hvor du gennemgår hver ændring.
- Copilot cloud agent: kører eksternt og integrerer med GitHub pull requests. Du kan tildele et GitHub-problem direkte til cloud-agenten, som derefter undersøger kodebasen, laver en implementeringsplan og laver kodeændringer på en branch til din gennemgang. Tilgængelig med Copilot Pro+, Business og Enterprise-planer.
For de fleste sikkerhedsudbedringer anbefales den lokale agent, fordi den giver dig realtidsindsigt i hver ændring. Cloud-agenten er nyttig til veldefinerede, lavrisiko-spørgsmål, hvor autonom implementering er acceptabel.
Tilladelsesniveauer
Før du starter en udbedringssession, vælg et tilladelsesniveau, der matcher arbejdets kompleksitet og risiko:
| Tilladelsesniveau | Beskrivelse | Anbefales til |
|---|---|---|
| Standardgodkendelser | Kun skrivebeskyttede og sikre værktøjer kører uden bekræftelse. Alle filredigeringer og terminalkommandoer kræver din godkendelse. | Sikkerhedsfølsom afhjælpning — maksimal kontrol |
| Omgåelsesgodkendelser | Auto-godkender alle værktøjskald uden bekræftelsesdialoger. | Rutinemæssige rettelser, hvor du stoler på planen |
| Autopilot (Forhåndsvisning) | Fuldstændig autonom — godkender automatisk værktøjer og reagerer automatisk, indtil opgaven er fuldført. | Anbefales ikke til sikkerhedsændringer |
Vælg tilladelsesniveauet fra tilladelsesvælgeren i chatvisningen. Til sikkerhedsafhjælpning anbefales Default Approvals, så du kan gennemgå hver filredigering, før den anvendes.
Udbedre sikkerhedsproblemer ved hjælp af agenten
Du kan bruge agenten til at implementere de sikkerhedsrettelser, der er identificeret under din Ask Agent-analyse. Agenten kan udføre flere udbedringstrin automatisk, mens den oprindelige funktionalitet bevares og kodesikkerheden forbedres.
Strategier til afhjælpning af sikkerhedsproblemer
Her er vigtige strategier til brug af agenttilstand til at afhjælpe sikkerhedsproblemer:
Ret sårbarheder i forbindelse med injektion: Instruer agenttilstand om at erstatte strengsammenkædning med parameteriserede forespørgsler eller forberedte sætninger.
Implementér sikker kryptering: Lad agenten opgradere svage hashing-algoritmer ved hjælp af sikre alternativer som bcrypt eller Argon2.
Rens logging: Brug agenten til at fjerne følsomme data fra logudsagn, samtidig med at brugbar diagnostisk information opretholdes.
Valider filstier: Lad agenten tilføje korrekt stivalidering, der forhindrer angreb gennem kataloger.
Tilføj inputvalidering: Få agenten til at implementere omfattende inputvalidering og sanitering.
Sørg for sikkerhed: Instruer agenten i at validere, at rettelser opretholder alle eksisterende sikkerhedstjek og ikke introducerer nye sårbarheder.
Oprethold funktionalitet: Brug agenten til at bevare al eksisterende forretningslogik og fejlhåndtering, samtidig med at sikkerheden forbedres.
Agent-prompts for at udbedre sikkerhedsproblemer
Når du bruger agenten til at løse sikkerhedsproblemer, bør dine prompts være specifikke, håndgribelige og inkludere sikkerhedshensyn. Her er eksempler på tekst på naturligt sprog, som du kan medtage i din prompt, når du afhjælper sikkerhedsproblemer:
Forberedelse og sikkerhed
Disse meddelelser hjælper dig med at etablere sikkerhedsforanstaltninger, før du foretager sikkerhedsændringer i din kodebase.
- "Før du foretager sikkerhedsrettelser, skal du oprette enhedstests, der verificerer den aktuelle adfærd for de valgte funktioner."
- "Analyser den valgte kode for afhængigheder, og sørg for, at rettelser opretholder al eksisterende funktionalitet."
- "Opret en backup-gren, og kør eksisterende tests, før du implementerer sikkerhedsrettelser til den valgte kode."
Grundlæggende afhjælpningshandlinger
Brug disse meddelelser til at løse almindelige sikkerhedssårbarheder med enkle rettelser.
- "Omstrukturer den valgte SQL-forespørgsel til at bruge parameteriserede forespørgsler i stedet for strengsammenkædning."
- "Erstat den valgte MD5-adgangskodehashing med bcrypt inklusive korrekt saltgenerering."
- "Fjern følsomme oplysninger fra de valgte logføringssætninger, mens diagnosticeringsværdien bevares."
- "Føj stivalidering til de valgte filhandlinger for at forhindre angreb på mappegennemgang."
Avancerede afhjælpningsmønstre
Disse prompter guider agenttilstand gennem mere komplekse sikkerhedsforbedringer, der involverer flere komponenter eller arkitektoniske ændringer.
- "Omstrukturer den valgte godkendelsesfunktion til at bruge sikker token-baseret godkendelse med korrekt udløb."
- "Implementer omfattende inputvalidering for de valgte brugerdatabehandlingsfunktioner."
- "Erstat den valgte svage krypteringsimplementering med AES-256-kryptering i henhold til bedste praksis."
- "Omstrukturer den valgte fejlhåndtering for at give brugervenlige meddelelser, mens du logger detaljerede fejl sikkert."
Kvalitet og validering
Brug disse meddelelser til at sikre, at sikkerhedsrettelser opfylder kvalitetsstandarderne og ikke introducerer regressioner.
- "Når du har implementeret sikkerhedsrettelser, skal du køre alle tests og kontrollere, at funktionaliteten forbliver identisk."
- "Sørg for, at den faste kode følger Microsofts C#-sikkerhedsretningslinjer og kodningskonventioner."
- "Valider, at sikkerhedsrettelserne ikke introducerer ydeevneregressioner."
- "Opret sikkerhedsfokuserede enhedstests for at verificere, at sårbarhederne er fuldt ud adresseret."
Arbejdsproces i agenttilstand til afhjælpning af sikkerhedsproblemer
Følg denne systematiske arbejdsproces for at afhjælpe sikkerhedsproblemer ved hjælp af Helpdesk-medarbejdertilstand:
Trin 1: Forbered dit arbejdsområde
At starte med et rent arbejdsområde sikrer, at du kan spore ændringer nøjagtigt og rulle tilbage, hvis det er nødvendigt.
Sørg for, at du arbejder i en ren Git-gren med alt eksisterende arbejde bekræftet. Gå til filen med sikkerhedssårbarheden, der blev identificeret under din Ask-agentanalyse, og hav din afhjælpningsplan klar til reference.
Trin 2: Indstil sikkerhedsforanstaltninger
Opret baseline-tests, før du foretager ændringer i din kode. Når kodeopdateringerne er fuldført, skal du bruge baseline-test til at kontrollere, at funktionaliteten forbliver intakt.
Før du foretager ændringer, skal du oprette tests for at bekræfte den aktuelle adfærd.
Eksempel på prompt: "Opret omfattende enhedstest for SearchProducts funktionen for at bekræfte den aktuelle funktionsmåde, før du implementerer sikkerhedsrettelser."
Agenten skaber tests, der fanger aktuel adfærd og giver et udgangspunkt for validering.
Tip
VS Code opretter automatisk checkpoints på nøglepunkter under agentsessioner. Hvis en sikkerhedsløsning introducerer uventede problemer, brug checkpoints til at rulle tilbage til en kendt god tilstand uden at miste andet arbejde. Dette supplerer din feature branch-strategi med en finkornet fortrydelsesmulighed.
Trin 3: Start med kritiske sikkerhedsrettelser
Håndtering af de mest risikofyldte sårbarheder først sikrer, at de farligste problemer løses hurtigt.
Begynd med de højest prioriterede sårbarheder.
Eksempel på prompt: "Omstrukturer SearchProducts metoden til at bruge parameteriserede forespørgsler i stedet for strengsammenkædning. Sørg for, at alle SQL-injektionsvektorer er elimineret."
Agenten analyserer koden, erstatter sårbar streng-sammenkædning med parameteriserede forespørgsler og tilføjer inputvalidering for at eliminere SQL-injektionssårbarheden.
Trin 4: Implementer sikker kryptografi
Opgradering af svag kryptografi beskytter følsomme data som adgangskoder mod at blive kompromitteret, selvom lageret brydes.
Fortsæt med kryptografiske forbedringer.
Eksempel på prompt: "Erstat MD5-adgangskodehashing i HashPassword metoden med bcrypt-implementering, herunder korrekt saltgenerering."
Agenten opgraderer svage hashing-algoritmer til sikre alternativer som bcrypt, tilføjer adgangskodevalidering og skaber en verifikationsmetode.
Trin 5: Rens logføring og fejlhåndtering
Fjernelse af følsomme oplysninger fra logge forhindrer dataeksponering, samtidig med at de diagnosticeringsfunktioner, der er nødvendige for fejlfinding, bevares.
Løse problemer med videregivelse af oplysninger.
Eksempel på prompt: "Fjern følsomme oplysninger fra logføringssætninger i godkendelsesmodulet, mens diagnosticeringsværdien bevares."
Agenten fjerner følsomme data fra logfiler og erstatter detaljerede fejlmeddelelser med brugervenlige alternativer, mens diagnostiske oplysninger bevares i sikre logfiler.
Trin 6: Tilføj stivalidering
Validering af filstier forhindrer angribere i at få adgang til filer uden for det tilsigtede mappeområde.
Implementer filstisikkerhed.
Eksempel på prompt: "Føj omfattende stivalidering til SaveFile metoden for at forhindre angreb på mappegennemgang."
Agenten implementerer stivalidering ved hjælp af Path.GetFileName(), verificerer at stier forbliver inden for de tilsigtede mapper, og tilføjer tjek for ugyldige tegn.
Trin 7: Valider ændringer
Test efter hver større rettelse sikrer, at sårbarheden løses, og at der ikke blev introduceret nye problemer.
Efter hver større sikkerhedsrettelse skal du validere ændringerne.
Eksempel på prompt: "Kør alle enhedstest, og opret sikkerhedsspecifikke test for at bekræfte, at SQL-injektionssårbarheden er fuldt rettet."
Agenten kører eksisterende tests og opretter andre sikkerhedstests, der forsøger SQL-injektionsangreb for at verificere, at sårbarheden er løst.
Trin 8: Gennemgå og gentag
Håndtering af testfejl og finjustering af implementeringer sikrer, at alle krav er opfyldt, før afhjælpningen betragtes som fuldført.
Hvis der findes problemer, skal du give specifikke instruktioner til forbedringer.
Eksempel på prompt: "Testen af validering af adgangskodelængde mislykkes. Opdater valideringen for at tillade adgangskoder mellem 8 og 128 tegn."
Agenten analyserer fejlede tests og foretager nødvendige rettelser for at sikre, at alle krav er opfyldt.
Denne strukturerede tilgang sikrer, at afhjælpning udføres sikkert og systematisk med validering på hvert trin.
Sikkerheds- og kvalitetsovervejelser
Når du bruger agenten til sikkerhedsafhjælpning, skal du altid overveje sikkerheds- og kvalitetsimplikationer:
Bedste praksis for sikkerhed
Hvis du følger disse sikkerhedspraksisser, sikrer du, at dine rettelser er omfattende og ikke introducerer nye sårbarheder.
Overvej følgende sikkerhedspraksis, når du afhjælper sårbarheder:
- Valider grundigt: Sørg for, at al inputvalidering er omfattende og håndterer kantsager.
- Bevar godkendelse: Kontroller, at sikkerhedsrettelser ikke omgår godkendelses- eller godkendelseskontrol.
- Oprethold forsvaret i dybden: Sørg for, at flere sikkerhedslag forbliver intakte.
- Gennemse afhængigheder: Tjek, at sikkerhedsrettelser ikke introducerer sårbare afhængigheder.
- Test grundigt: Inkluder både positive og negative sikkerhedstesttilfælde.
Kodeks kvalitetsstandarder
Opretholdelse af kodekvalitet sammen med sikkerhedsforbedringer sikrer, at din kodebase forbliver vedligeholdelsesvenlig og professionel.
Oprethold høj kodekvalitet ved at følge disse retningslinjer:
- Følg konventioner: Sørg for, at fast kode følger Microsofts C#-kodningskonventioner.
- Bevar læsbarheden: Kontrollér, at sikkerhedsrettelser ikke kompromitterer kodeklarheden.
- Dokumentændringer: Tilføj kommentarer, der forklarer sikkerhedskritisk kode.
- Opdater dokumentation: Sørg for, at README, sikkerhedspolitikker og API-dokumenter afspejler ændringer.
- Overvej ydeevnen: Kontrollér, at sikkerhedsforbedringer ikke forringer ydeevnen væsentligt.
Sikkerhedsretningslinjer for agenttilstand
Agenten er magtfuld, men kræver omhyggelig overvågning.
Før afhjælpning
Hvis du tager disse forholdsregler, før du påbegynder afhjælpning, minimeres risikoen for at miste arbejde eller indføre ændringer i stykker.
- Arbejd altid i en funktionsgren.
- Sørg for, at der findes omfattende testdækning.
- Gennemgå opbedringsplanen fra Ask-agentens analyse.
- Sæt tilladelsesniveauet til Standardgodkendelser , så du kan gennemgå hvert værktøjskald.
- Forstå sikkerhedssårbarheden og dens potentielle virkninger.
- Sikkerhedskopier alle kritiske data eller konfigurationer.
Under afhjælpning
Hvis du følger disse fremgangsmåder under afhjælpning, kan du fange og løse problemer, når de opstår, i stedet for at opdage dem senere.
- Foretag trinvise ændringer i stedet for store transformationer.
- Valider hvert trin, før du går videre til det næste.
- Gennemgå genereret kode for korrekthed og sikkerhed.
- Test ofte for at fange problemer tidligt.
- Overvåg for utilsigtede bivirkninger.
- Brug Visual Studio Code-checkpoints til at rulle tilbage til en kendt god tilstand, hvis det er nødvendigt.
Efter afhjælpning
Disse trin efter afhjælpning bekræfter, at dine rettelser er fuldført, korrekte og klar til udrulning.
- Kør omfattende tests, herunder sikkerhedstests.
- Udfør kodegennemgang med teammedlemmer.
- Valider sikkerhedsegenskaber ved hjælp af sikkerhedsværktøjer.
- Opdater GitHub-problem med rettelsesoplysninger.
- Dokumenter erfaringer til fremtidig reference.
Behandl agenttilstand som en kraftfuld assistent
Selvom agenten kan udføre komplekse ophjælpsopgaver, kræver det menneskelig overvågning:
- Gennemgå alle ændringer, før du accepterer dem.
- Valider, at sikkerhedssårbarheder er fuldt ud løst.
- Sørg for, at der ikke introduceres nye sårbarheder.
- Test grundigt for at fange subtile problemer.
- Bekræft overholdelse af sikkerhedspolitikker.
Agenten fremskynder sikkerhedsudbedringen, men erstatter ikke behovet for grundig gennemgang og testning.
Integration med Git-arbejdsgang
Inkorporér agentændringer problemfrit i din Git-arbejdsgang ved hjælp af Visual Studio Code's indbyggede værktøjer.
Bekræfte ændringer ved hjælp af kildekontrolvisning
Visual Studio Codes integrerede Source Control-visning strømliner processen med at bekræfte og skubbe sikkerhedsrettelser til dit lager.
Visual Studio Codes visning af kildekontrol giver en integreret måde at gennemse og bekræfte dine sikkerhedsrettelser på:
Åbn visningen Kildekontrolelement ved at vælge ikonet Kildekontrolelement på aktivitetslinjen eller trykke på Ctrl+Skift+G.
Gennemgå ændringerne under "Ændringer" for at kontrollere, at alle sikkerhedsrettelser er inkluderet.
Iscenesæt filer ved at holde markøren over dem og vælge ikonet + , eller iscenesæt alle ændringer ved hjælp af + ikonet ved siden af "Ændringer".
Angiv en beskrivende bekræftelsesmeddelelse i meddelelsesfeltet, der refererer til GitHub-problemet:
Fix SQL injection vulnerability in SearchProducts - Replace string concatenation with parameterized queries - Add input validation for search terms - Implement security tests for injection attempts Fixes #42Notat
Hvis du vil knytte dine bekræftelser til GitHub-problemer, skal du medtage problemnummeret i din bekræftelsesmeddelelse ved hjælp af syntaksen Rettelser #issue-tal . Denne syntaks lukker automatisk problemet, når bekræftelsen flettes.
Vælg knappen Udfør for at bekræfte dine ændringer.
Vælg knappen Synkroniser ændringer for at overføre din forgrening til fjernlageret.
Alternativt kan du bruge Git-kommandoer i den integrerede terminal:
# Stage all changes
git add .
# Commit with a descriptive message referencing the GitHub issue
git commit -m "Fix SQL injection vulnerability in SearchProducts
- Replace string concatenation with parameterized queries
- Add input validation for search terms
- Implement security tests for injection attempts
Fixes #42"
# Push changes to the remote repository
git push origin your-branch-name
Oversigt
Brug af GitHub Copilots agenttilstand gør det muligt for udviklere effektivt at afhjælpe sikkerhedsproblemer, samtidig med at kodekvalitet og funktionalitet opretholdes. Ved at kombinere de analytiske indsigter fra Ask-agenten med agentens eksekveringsmuligheder kan du systematisk adressere sårbarheder i din kodebase. Vælg den rette agenttype til din situation – brug den lokale agent til interaktiv, trin-for-trin afhjælpning, eller cloud-agenten til at tildele veldefinerede problemer til autonom løsning. Nøglen til succes er at give klare instruktioner, fastsætte passende tilladelsesniveauer, opretholde sikkerhedspraksis, grundigt validere alle ændringer og sikre korrekt dokumentation. Agenten er en kraftfuld assistent, der fremskynder afhjælpning, men menneskelig overvågning er fortsat afgørende for at sikre, at sikkerhedsrettelser er komplette, korrekte og ikke introducerer nye sårbarheder.