Beheben von Problemen mithilfe des Agentmodus von GitHub Copilot

Abgeschlossen

Nachdem Sie Sicherheitsprobleme mithilfe des Ask-Modus analysiert haben, können Sie Korrekturen implementieren. Mit dem Agent-Modus von GitHub Copilot können Sie komplexe Wartungsaufgaben sicher ausführen und gleichzeitig sicherstellen, dass die Funktionalität erhalten bleibt und die Codequalität verbessert wird.

Hinweis

Verwenden Sie immer den Ask-Modus von GitHub Copilot, um Sicherheitsprobleme zu analysieren und einen Wartungsplan zu formulieren, bevor Sie den Agentmodus verwenden, um Änderungen zu implementieren. Mit diesem Ansatz wird sichergestellt, dass die Umgestaltung überlegt und sicher durchgeführt wird.

Was ist der Agent-Modus?

Der Agentmodus von GitHub Copilot funktioniert autonom, um komplexe Wartungsaufgaben in Ihrer Codebasis auszuführen. Im Gegensatz zum Ask-Modus, der Anleitungen und Vorschläge im Chatbereich bereitstellt, implementiert der Agentmodus vorgeschlagene Updates als Bearbeitungen direkt in Ihren Codedateien.

Zu den Agentmodusfunktionen gehören:

  • Bearbeiten von Dateien mit präzisen Codeänderungen.
  • Gleichzeitiges Anwenden von Änderungen auf mehrere Dateien.
  • Führen Sie Tests aus, um Änderungen zu überprüfen.
  • Ausführen von Befehlen basierend auf Ihren Anweisungen.
  • Grundlegendes zu Projektkontext und Abhängigkeiten.
  • Beibehalten der Konsistenz über die Codebasis hinweg.

Der Agentmodus eignet sich ideal für die Implementierung von Mehrschritt-Sicherheitsupdates, die eine sorgfältige Behandlung von Abhängigkeiten, Edgefällen und Tests erfordern. Der Agentmodus definiert automatisch den erforderlichen Kontext und führt die erforderlichen Schritte aus, um Ihre Wartungsziele zu erreichen.

Beheben von Sicherheitsproblemen mithilfe des Agentmodus

Sie können den Agent-Modus verwenden, um die sicherheitsrelevanten Korrekturen zu implementieren, die während ihrer Fragenmodusanalyse identifiziert wurden. Der Agentmodus kann mehrere Korrekturschritte automatisch ausführen und gleichzeitig die ursprüngliche Funktionalität beibehalten und die Codesicherheit verbessern.

Strategien zur Behebung von Sicherheitsproblemen

Hier sind die wichtigsten Strategien für die Verwendung des Agentmodus zur Behebung von Sicherheitsproblemen:

  • Behebung von Einschleusungsrisiken: Weisen Sie den Agentmodus an, Zeichenfolgenverkettung durch parametrisierte Abfragen oder vorbereitete Anweisungen zu ersetzen.

  • Implementieren sie sichere Verschlüsselung: Führen Sie ein Upgrade von schwachen Hashingalgorithmen im Agentmodus mit sicheren Alternativen wie bcrypt oder Argon2 durch.

  • Protokollierung bereinigen: Verwenden Sie den Agent-Modus, um vertrauliche Daten aus Protokollanweisungen zu entfernen und dabei nützliche Diagnoseinformationen beizubehalten.

  • Überprüfen von Dateipfaden: Zulassen, dass der Agentmodus eine ordnungsgemäße Pfadüberprüfung hinzugibt, die Verhindert, dass Verzeichnis-Traversalangriffe ausgeführt werden.

  • Eingabeüberprüfung hinzufügen: Lassen Sie den Agentmodus umfassende Eingabeüberprüfung und Bereinigung implementieren.

  • Sicherheit sicherstellen: Weisen Sie den Agentmodus an, zu überprüfen, ob Korrekturen alle vorhandenen Sicherheitsüberprüfungen beibehalten und keine neuen Sicherheitsrisiken einführen.

  • Verwalten von Funktionen: Verwenden Sie den Agent-Modus, um alle vorhandenen Geschäftslogik und Fehlerbehandlungen beizubehalten, während sie die Sicherheit verbessern.

Agentmodus fordert zur Behebung von Sicherheitsproblemen auf

Wenn Sie den Agent-Modus verwenden, um Sicherheitsprobleme zu beheben, sollten Ihre Eingabeaufforderungen spezifisch, umsetzbar sein und Sicherheitsüberlegungen enthalten. Im Folgenden finden Sie Beispiele für Text in natürlicher Sprache, den Sie bei der Behebung von Sicherheitsproblemen in Ihre Eingabeaufforderung aufnehmen können:

Vorbereitung und Sicherheit

Diese Eingabeaufforderungen helfen Ihnen dabei, Sicherheitsmaßnahmen einzurichten, bevor Sie Sicherheitsänderungen an Ihrer Codebasis vornehmen.

  • "Bevor Sie Sicherheitsfixes vornehmen, erstellen Sie Komponententests, die das aktuelle Verhalten der ausgewählten Funktionen überprüfen."
  • "Analysieren Sie den ausgewählten Code für Abhängigkeiten, und stellen Sie sicher, dass Korrekturen alle vorhandenen Funktionen beibehalten."
  • "Erstellen Sie einen Sicherungszweig, und führen Sie vorhandene Tests aus, bevor Sie Sicherheitsupdates für den ausgewählten Code implementieren."

Grundlegende Wartungsvorgänge

Verwenden Sie diese Hinweise, um häufige Sicherheitslücken mit einfachen Korrekturen zu beheben.

  • "Umgestalten Sie die ausgewählte SQL-Abfrage so, dass parametrisierte Abfragen anstelle der Zeichenfolgenverkettung verwendet werden."
  • „Ersetze den ausgewählten MD5-Kennworthashing durch bcrypt einschließlich der richtigen Salzgenerierung.“
  • Entfernen Sie vertrauliche Informationen aus den ausgewählten Protokolleinträgen, ohne den Diagnosewert zu beeinträchtigen.
  • "Fügen Sie die Pfadüberprüfung zu den ausgewählten Dateivorgängen hinzu, um Verzeichnis-Traversalangriffe zu verhindern."

Erweiterte Korrekturmuster

Diese Aufforderungen führen den Agentmodus durch komplexere Sicherheitsverbesserungen, die mehrere Komponenten oder Architekturänderungen umfassen.

  • Überarbeiten Sie die ausgewählte Authentifizierungsfunktion, um eine sichere, tokenbasierte Authentifizierung mit korrektem Ablauf zu verwenden.
  • "Implementieren Sie eine umfassende Eingabeüberprüfung für die ausgewählten Benutzerdatenverarbeitungsfunktionen."
  • "Ersetzen Sie die ausgewählte schwache Verschlüsselungsimplementierung durch die AES-256-Verschlüsselung nach bewährten Methoden."
  • "Umgestalten Sie die ausgewählte Fehlerbehandlung, um benutzerfreundliche Nachrichten bereitzustellen, während detaillierte Fehler sicher protokolliert werden."

Qualität und Validierung

Verwenden Sie diese Eingabeaufforderungen, um sicherzustellen, dass Sicherheitsupdates Qualitätsstandards erfüllen und keine Regressionen einführen.

  • "Führen Sie nach der Implementierung von Sicherheitsfixes alle Tests aus, und stellen Sie sicher, dass die Funktionalität identisch bleibt."
  • "Stellen Sie sicher, dass der feste Code den C#-Sicherheitsrichtlinien und Codierungskonventionen von Microsoft folgt."
  • "Überprüfen Sie, ob die Sicherheitsfixes keine Leistungsregressionen einführen."
  • "Erstellen Sie sicherheitsorientierte Komponententests, um zu überprüfen, ob die Sicherheitsrisiken vollständig behoben sind."

Agentenmodus-Workflow zur Behebung von Sicherheitsproblemen

Befolgen Sie diesen systematischen Workflow, um Sicherheitsprobleme mithilfe des Agentmodus zu beheben:

Schritt 1: Vorbereiten des Arbeitsbereichs

Wenn Sie mit einem sauberen Arbeitsbereich beginnen, können Sie Änderungen bei Bedarf genau nachverfolgen und zurücksetzen.

Stellen Sie sicher, dass Sie in einem sauberen Git-Branch arbeiten, in dem alle vorhandenen Arbeiten committet wurden. Navigieren Sie zu der Datei, die die sicherheitsrelevante Sicherheitsanfälligkeit enthält, die im Ask-Modus analysiert wurde, und lassen Sie Ihren Wartungsplan zur Referenzierung bereit.

Schritt 2: Einrichten von Sicherheitsmaßnahmen

Erstellen Sie Basisplantests, bevor Sie Änderungen an Ihrem Code vornehmen. Wenn Codeupdates abgeschlossen sind, überprüfen Sie mithilfe von Basisplantests, ob die Funktionalität intakt bleibt.

Erstellen Sie vor dem Vornehmen von Änderungen Tests, um das aktuelle Verhalten zu überprüfen.

Beispielaufforderung: "Erstellen Sie umfassende Komponententests für die Funktion, um das aktuelle Verhalten vor der SearchProducts Implementierung von Sicherheitsupdates zu überprüfen."

Der Agentmodus erstellt Tests, die das aktuelle Verhalten erfassen und einen Basisplan für die Überprüfung bereitstellen.

Schritt 3: Starten mit kritischen Sicherheitsupdates

Durch die Behandlung der Sicherheitsanfälligkeiten mit dem höchsten Risiko stellen Sie zunächst sicher, dass die gefährlichsten Probleme umgehend behoben werden.

Beginnen Sie mit den Sicherheitsrisiken mit der höchsten Priorität.

Beispielanweisung: „Refaktorieren Sie die SearchProducts-Methode, um parametrisierte Abfragen anstelle von Zeichenfolgenkonkatenation zu verwenden. Stellen Sie sicher, dass alle SQL-Injektionsvektoren eliminiert werden."

Der Agentmodus analysiert den Code, ersetzt anfällige Zeichenfolgenverkettung durch parametrisierte Abfragen und fügt eine Eingabeüberprüfung hinzu, um die Sicherheitsanfälligkeit bei der SQL-Einfügung zu beseitigen.

Schritt 4: Implementieren sicherer Kryptografie

Das Upgrade schwacher Kryptografie schützt vertrauliche Daten wie Kennwörter davor, kompromittiert zu werden, selbst wenn der Speicher gefährdet ist.

Fahren Sie mit kryptografischen Verbesserungen fort.

Beispielaufforderung: „Ersetze den MD5-Kennworthashing in der HashPassword-Methode durch die bcrypt-Implementierung einschließlich der richtigen Salzgenerierung.“

Im Agentmodus werden schwache Hashing-Algorithmen auf sichere Alternativen wie bcrypt umgestellt, die Kennwortüberprüfung hinzugefügt und eine Verifizierungsmethode entwickelt.

Schritt 5: Bereinigen der Protokollierung und Fehlerbehandlung

Durch das Entfernen vertraulicher Informationen aus Protokollen wird die Datenexposition verhindert, während die diagnosefunktionen beibehalten werden, die für das Debuggen erforderlich sind.

Beheben von Problemen mit der Offenlegung von Informationen.

Beispielaufforderung: "Entfernen vertraulicher Informationen aus Protokollierungsanweisungen im Authentifizierungsmodul, ohne den Diagnosewert zu beeinträchtigen."

Der Agentmodus entfernt vertrauliche Daten aus Protokollen und ersetzt detaillierte Fehlermeldungen durch benutzerfreundliche Alternativen, während Diagnoseinformationen in sicheren Protokollen erhalten bleiben.

Schritt 6: Hinzufügen der Pfadüberprüfung

Durch das Überprüfen von Dateipfaden wird verhindert, dass Angreifer außerhalb des vorgesehenen Verzeichnisbereichs auf Dateien zugreifen.

Implementieren Sie die Sicherheit des Dateipfads.

Beispielaufforderung: "Fügen Sie der Methode eine SaveFile umfassende Pfadüberprüfung hinzu, um Verzeichnis-Traversalangriffe zu verhindern."

Der Agentmodus implementiert die Pfadüberprüfung mit Path.GetFileName(), wodurch sichergestellt wird, dass die Pfade innerhalb der vorgesehenen Verzeichnisse bleiben und Überprüfungen auf ungültige Zeichen hinzugefügt werden.

Schritt 7: Überprüfen von Änderungen

Tests nach jedem wichtigen Fix stellen sicher, dass die Sicherheitsanfälligkeit behoben ist und keine neuen Probleme eingeführt wurden.

Überprüfen Sie nach jedem wichtigen Sicherheitsfix die Änderungen.

Beispielaufforderung: "Führen Sie alle Unit-Tests aus und erstellen Sie sicherheitsspezifische Tests, um zu überprüfen, ob die SQL-Injection-Schwachstelle vollständig beseitigt wurde."

Der Agentmodus führt vorhandene Tests aus und erstellt weitere Sicherheitstests, die SQL-Einfügungsangriffe versuchen, um zu überprüfen, ob die Sicherheitsanfälligkeit behoben ist.

Schritt 8: Überprüfen und Wiederholen

Durch die Bearbeitung von Testfehlern und die Verfeinerung der Implementierungen wird sichergestellt, dass alle Anforderungen erfüllt sind, bevor die Abhilfemaßnahmen abgeschlossen sind.

Wenn Probleme gefunden werden, geben Sie spezifische Anweisungen für Verfeinerungen an.

Beispielaufforderung: "Fehler bei der Überprüfung der Kennwortlänge. Aktualisieren Sie die Überprüfung so, dass Kennwörter zwischen 8 und 128 Zeichen zulässig sind."

Der Agentmodus analysiert fehlerhafte Tests und nimmt notwendige Korrekturen vor, um sicherzustellen, dass alle Anforderungen erfüllt sind.

Mit diesem strukturierten Ansatz wird sichergestellt, dass die Wartung sicher und systematisch durchgeführt wird, wobei bei jedem Schritt eine Überprüfung durchgeführt wird.

Überlegungen zu Sicherheit und Qualität

Berücksichtigen Sie bei der Verwendung des Agent-Modus zur Sicherheitsbehebung immer Sicherheits- und Qualitätsauswirkungen:

Bewährte Sicherheitsmethoden

Wenn Sie diese Sicherheitspraktiken ausführen, stellen Sie sicher, dass Ihre Fixes umfassend sind und keine neuen Sicherheitsrisiken einführen.

Berücksichtigen Sie beim Beheben von Sicherheitsrisiken die folgenden Sicherheitspraktiken:

  • Gründlich überprüfen: Stellen Sie sicher, dass alle Eingaben umfassend überprüft und Grenzfälle behandelt werden.
  • Autorisierung beibehalten: Überprüfen Sie, ob Sicherheitsupdates keine Authentifizierungs- oder Autorisierungsprüfungen umgehen.
  • Beibehalten der Verteidigung im Detail: Stellen Sie sicher, dass mehrere Sicherheitsebenen intakt bleiben.
  • Überprüfen Sie Abhängigkeiten: Überprüfen Sie, ob Sicherheitsfixes keine anfälligen Abhängigkeiten einführen.
  • Testen Sie umfassend: Schließen Sie sowohl positive als auch negative Sicherheitstestfälle ein.

Codequalitätsstandards

Die Aufrechterhaltung der Codequalität neben Sicherheitsverbesserungen stellt sicher, dass Ihre Codebasis beibehalten und professionell bleibt.

Behalten Sie hohe Codequalität bei, indem Sie die folgenden Richtlinien befolgen:

  • Befolgen Sie Konventionen: Stellen Sie sicher, dass fester Code den C#-Codierungskonventionen von Microsoft folgt.
  • Lesbarkeit beibehalten: Stellen Sie sicher, dass Sicherheitsfixes keine Codeklarheit gefährden.
  • Dokumentänderungen: Fügen Sie Kommentare hinzu, die sicherheitskritischen Code erläutern.
  • Updatedokumentation: Stellen Sie sicher, dass README, Sicherheitsrichtlinien und API-Dokumente Änderungen widerspiegeln.
  • Berücksichtigen Sie die Leistung: Überprüfen Sie, ob Sicherheitsverbesserungen die Leistung nicht erheblich beeinträchtigen.

Sicherheitsrichtlinien für den Agentmodus

Der Agentmodus ist leistungsfähig, erfordert jedoch eine sorgfältige Aufsicht.

Vor der Behebung

Wenn Sie diese Vorsichtsmaßnahmen treffen, bevor Sie mit der Behebung beginnen, wird das Risiko minimiert, dass Arbeit verloren geht oder kritische Änderungen eingeführt werden.

  • Arbeiten Sie immer in einem Feature-Branch.
  • Stellen Sie sicher, dass eine umfassende Testabdeckung vorhanden ist.
  • Überprüfen Sie den Wartungsplan aus der Ask Mode-Analyse.
  • Verstehen sie die Sicherheitslücke und ihre potenziellen Auswirkungen.
  • Sichern Sie alle kritischen Daten oder Konfigurationen.

Während der Behebung

Wenn Sie diese Methoden während der Wartung ausführen, können Sie Probleme erfassen und beheben, wenn sie auftreten, anstatt sie später zu entdecken.

  • Nehmen Sie inkrementelle Änderungen anstelle großer Transformationen vor.
  • Überprüfen Sie jeden Schritt, bevor Sie mit der nächsten fortfahren.
  • Überprüfen Sie generierten Code auf Richtigkeit und Sicherheit.
  • Testen Sie häufig, um Probleme frühzeitig zu erfassen.
  • Überwachen sie auf unbeabsichtigte Nebenwirkungen.

Nach der Behebung

Diese Schritte nach der Korrektur stellen sicher, dass Ihre Korrekturen abgeschlossen, korrekt und bereit für die Bereitstellung sind.

  • Führen Sie umfassende Tests einschließlich Sicherheitstests aus.
  • Durchführen der Codeüberprüfung mit Teammitgliedern.
  • Überprüfen Von Sicherheitsmerkmalen mithilfe von Sicherheitstools.
  • Aktualisieren sie das GitHub-Problem mit Fixdetails.
  • Dokumentierte Lektionen, die für zukünftige Referenz gelernt wurden.

Behandeln Sie den „Agent-Modus“ als leistungsstarken Assistenten.

Der Agentmodus kann zwar komplexe Wartungsaufgaben ausführen, erfordert jedoch eine menschliche Aufsicht:

  • Überprüfen Sie alle Änderungen, bevor Sie sie annehmen.
  • Überprüfen Sie, ob Sicherheitsrisiken vollständig behoben sind.
  • Stellen Sie sicher, dass keine neuen Sicherheitsrisiken eingeführt werden.
  • Testen Sie sorgfältig, um subtile Probleme zu erfassen.
  • Überprüfen Sie die Einhaltung von Sicherheitsrichtlinien.

Der Agentmodus beschleunigt die Sicherheitsbehebung, ersetzt aber nicht die Notwendigkeit sorgfältiger Überprüfungen und Tests.

Integration in Git-Workflow

Integrieren Sie Änderungen des Agentmodus nahtlos in Ihren Git-Workflow, indem Sie die integrierten Tools von Visual Studio Code verwenden.

Übernehmen von Änderungen mithilfe der Ansicht "Quellcodeverwaltung"

Die integrierte Quellcodeverwaltungsansicht von Visual Studio Code optimiert den Prozess des Commitens und Pushens von Sicherheitskorrekturen an Ihr Repository.

Die Quellcodeverwaltungsansicht von Visual Studio Code bietet eine integrierte Möglichkeit, Ihre Sicherheitsfixes zu überprüfen und zu übernehmen:

  1. Öffnen Sie die Ansicht "Quellcodeverwaltung", indem Sie in der Aktivitätsleiste das Symbol "Quellcodeverwaltung" auswählen oder STRG+UMSCHALT+G drücken.

  2. Überprüfen Sie die unter "Änderungen" aufgeführten Änderungen, um zu überprüfen, ob alle Sicherheitsupdates enthalten sind.

  3. Stagen Sie Dateien, indem Sie mit der Maus darauf zeigen und das + Symbol auswählen, oder stagen Sie alle Änderungen mit dem + Symbol neben "Änderungen".

  4. Geben Sie eine beschreibende Commit-Nachricht in das Meldungsfeld ein, die auf das GitHub-Problem verweist:

    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
    

    Hinweis

    Um Ihre Commits mit GitHub-Problemen zu verknüpfen, schließen Sie die Problemnummer in Ihre Commit-Nachricht ein, indem Sie die Fixes #issue-Nummer-Syntax verwenden. Diese Syntax schließt das Problem automatisch, wenn der Commit zusammengeführt wird.

  5. Wählen Sie die Schaltfläche "Commit" aus, um Ihre Änderungen zu übernehmen.

  6. Wählen Sie die Schaltfläche "Änderungen synchronisieren" aus, um Ihre Branch an das Remote-Repository zu übertragen.

Alternativ können Sie Git-Befehle im integrierten Terminal verwenden:

# 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

Zusammenfassung

Mit dem Agentmodus von GitHub Copilot können Entwickler Sicherheitsprobleme effizient beheben und gleichzeitig codequalität und -funktionalität beibehalten. Durch die Kombination der analytischen Erkenntnisse aus dem Ask-Modus mit den Ausführungsfunktionen des Agentmodus können Sie Sicherheitsrisiken in Ihrer Codebasis systematisch beheben. Der Schlüssel zum Erfolg besteht darin, klare Anweisungen bereitzustellen, Sicherheitsmaßnahmen beizubehalten, alle Änderungen gründlich zu validieren und eine ordnungsgemäße Dokumentation sicherzustellen. Der Agentmodus von GitHub Copilot ist ein leistungsstarker Assistent, der die Behebung beschleunigt. Die menschliche Aufsicht bleibt jedoch unerlässlich, um sicherzustellen, dass Sicherheitsupdates vollständig, korrekt sind und keine neuen Sicherheitsrisiken einführen.