Freigeben über


Schnellstart: Sicherheitsanalyse (Vorschau)

GitHub Copilot unterstützt Entwickler bei der Identifizierung und Behebung allgemeiner Sicherheitsrisiken in SQL-Code- und Anwendungsebenenabfragen. Es kann helfen, Sicherheitsrisiken wie SQL-Einfügung, überlastete Daten und unsichere Muster zu erkennen, insbesondere für Entwickler ohne starken Sicherheitshintergrund, indem praktische, kontextbezogene Empfehlungen während der Entwicklung bereitgestellt werden.

Loslegen

Stellen Sie sicher, dass Sie mit einer Datenbank verbunden sind und ein aktives Editorfenster mit der MSSQL-Erweiterung geöffnet ist. Diese Verbindung ermöglicht es dem @mssql Chatteilnehmer, den Kontext Ihrer Datenbankumgebung zu verstehen und präzise und kontextbezogene Vorschläge zu ermöglichen. Ohne Datenbankverbindung verfügt der Chatteilnehmer nicht über das Schema oder den Datenkontext, um aussagekräftige Antworten bereitzustellen.

In den folgenden Beispielen wird die AdventureWorksLT2022 Beispieldatenbank verwendet, die Sie auf der Startseite von Microsoft SQL Server-Beispielen und Communityprojekten herunterladen können.

Um optimale Ergebnisse zu erzielen, passen Sie Tabellen- und Schemanamen an Ihre eigene Umgebung an.

Stellen Sie sicher, dass der Chat das @mssql Präfix enthält. Geben Sie @mssql z. B. gefolgt von Ihrer Frage oder Aufforderung ein. Dadurch wird sichergestellt, dass der Chatteilnehmer versteht, dass Sie sql-bezogene Unterstützung anfordern.

Erkennen und Beheben von Sicherheitsrisiken mit GitHub Copilot

GitHub Copilot hilft Entwicklern, häufige Sicherheitsrisiken frühzeitig im Entwicklungsprozess zu erkennen und zu beheben, bevor sie die Produktion erreichen. Unabhängig davon, ob Sie rohe SQL-, ORMs- oder gespeicherte Prozeduren verwenden, kann GitHub Copilot unsichere Muster identifizieren, potenzielle Risiken erklären und sicherere Alternativen basierend auf Ihrem Datenbankkontext vorschlagen. Dies ist besonders nützlich für Entwickler, die nicht auf Sicherheit spezialisiert sind, aber sichere Codierungsmethoden befolgen müssen.

Hier finden Sie häufige Anwendungsfälle und Beispiele dafür, was Sie über den Chatteilnehmer fragen können.

SQL-Einfügungserkennung

DIE SQL-Einfügung ist eine der häufigsten und gefährlichsten Sicherheitsrisiken in Datenbankanwendungen. GitHub Copilot kann dazu beitragen, nicht parametrisierte Abfragen, Zeichenfolgeninterpolationsprobleme und Missbrauch dynamischer SQL zu identifizieren und gleichzeitig sicherere, parametrisierte Alternativen zu empfehlen, die auf Ihren Kontext zugeschnitten sind.

  • Ich arbeite mit SQLAlchemy in Python an meinem aktuellen Datenbankschema SalesLT. Überprüfen Sie die folgende SQLAlchemy Abfrage auf potenzielle Sicherheitsrisiken, wie z. B. SQL Injection, Überabfrage oder Leistungsprobleme. Schlagen Sie gegebenenfalls Verbesserungen mithilfe parametrisierter Abfragen, Verbindungspooling und anderer sicherer SQL Server Methoden vor, um Leistung und Sicherheit zu gewährleisten.
query = f"SELECT * FROM SalesLT.Customer WHERE LastName = '{user_input}'"
result = engine.execute(query).fetchall()
  • Analysieren Sie die folgende JavaScriptSQL Abfrage nach potenziellen Sicherheitsrisiken. Identifizieren Sie Risiken wie SQL Einfügung, Überholen und schlechte Authentifizierungsmethoden. Erläutern Sie, warum diese Abfrage unsicher ist und eine sichere Alternative bereitstellt.
const query = `SELECT * FROM Users WHERE Username = '${username}' AND Password = '${password}'`;
  • Simulieren Sie mithilfe meiner aktuellen Datenbank einen Einfügungsangriff SQL für die SalesLT.uspGetCustomerOrderHistory gespeicherte Prozedur und schlagen Korrekturen vor.

  • Überprüfen Sie die gespeicherte Prozedur SalesLT.uspGetCustomerOrderHistory in meiner aktuellen Datenbank auf potenzielle SQL-Einfügungsrisiken. Erläutern Sie, wie unparameterisierte oder nicht ordnungsgemäß überprüfte Eingaben ausgenutzt werden können, und empfehlen Sie sichere Codierungsmethoden.

  • Überprüfen Sie die gespeicherte SalesLT.uspGetCustomerOrderHistory_Insecure Prozedur. Identifizieren Sie potenzielle Sicherheitsprobleme in der Implementierung, und stellen Sie dann eine überarbeitete Version der gespeicherten Prozedur bereit, die diese Bedenken behandelt, ohne die bewährten Sicherheitsmethoden explizit aufzulisten.

Mit dem folgenden T-SQL können Sie die gespeicherte Prozedur erstellen:

CREATE OR ALTER PROCEDURE [SalesLT].[uspGetCustomerOrderHistory_Insecure]
@CustomerID NVARCHAR (50)
AS
BEGIN
    DECLARE @SQL AS NVARCHAR (MAX) = N'SELECT *
    FROM SalesLT.SalesOrderHeader
    WHERE CustomerID = ' + @CustomerID + ';';
    EXECUTE (@SQL);
END
GO

Allgemeine Sicherheitsvorschläge

Über die SQL-Einfügung hinaus machen viele Datenbankanwendungen vertrauliche Daten verfügbar oder verwenden standardmäßig unsichere Konfigurationen. GitHub Copilot bietet Anleitungen zum Verschlüsseln von Verbindungen, Maskieren oder Schützen personenbezogener Daten und zur Anpassung an bewährten Methoden für sichere Authentifizierung und Autorisierung in mehreren Entwicklungsstapeln.

  • Empfehlen Sie sichere Methoden zum Speichern vertraulicher Daten in der SalesLT.Address Tabelle.

  • Was sind die besten Strategien oder integrierten Features in meiner Datenbank zum Maskieren personenbezogener Daten in der SalesLT.Customer Tabelle?

  • Wie kann ich meine Verbindungszeichenfolge Entity Framework Core so konfigurieren, dass Verschlüsselung erzwungen wird und keine Anmeldeinformationen verfügbar werden?

  • Wie kann ich in einer Prisma- oder Node.js-Umgebung die Microsoft Entra ID-Authentifizierung oder die verwaltete Identität sicher mit SQL Server verwenden, anstatt Kennwörter zu speichern?

  • Welche SQL Server Optionen sollte ich aktivieren oder überprüfen (z Always Encrypted. B. , Transparent Data Encryption), um Kundendaten bei verwendung von ORMs wie Sequelize oder EF Core zu schützen?

Feedback: Sicherheitsanalyse

Um uns dabei zu helfen, GitHub Copilot für die MSSQL-Erweiterung zu verfeinern und zu verbessern, verwenden Sie die folgende GitHub-Problemvorlage, um Ihr Feedback zu übermitteln: GitHub Copilot Feedback

Berücksichtigen Sie bei der Übermittlung von Feedback Folgendes:

  • Getestete Szenarien – Teilen Sie uns mit, auf welche Bereiche Sie sich konzentrieren, z. B. Schemaerstellung, Abfragegenerierung, Sicherheit, Lokalisierung.

  • Was gut funktioniert hat – Beschreiben Sie alle Erfahrungen, die sich reibungslos, hilfreich fühlen oder Ihre Erwartungen überschritten haben.

  • Probleme oder Fehler – Schließen Sie alle Probleme, Inkonsistenzen oder verwirrende Verhaltensweisen ein. Screenshots oder Bildschirmaufzeichnungen sind besonders hilfreich.

  • Verbesserungsvorschläge – Teilen Sie Ideen zur Verbesserung der Benutzerfreundlichkeit, zur Erweiterung der Abdeckung oder zur Verbesserung der Antworten von GitHub Copilot.