Freigeben über


Schnellstart: Sicherheitsanalyse

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.

BEISPIEL für SQLAlchemy in Python

I'm working with SQLAlchemy in Python for my current database `SalesLT` schema. Check the following `SQLAlchemy` query for potential security risks, such as SQL injection, over-fetching, or performance issues. If applicable, suggest improvements using parameterized queries, connection pooling, and other secure `SQL Server` practices to ensure performance and security.

query = f"SELECT * FROM SalesLT.Customer WHERE LastName = '{user_input}'"
result = engine.execute(query).fetchall()

Beispiel für JavaScript-SQL

Analyze the following JavaScript SQL query for potential security vulnerabilities. Identify risks such as SQL injection, over-fetching, and poor authentication practices. Explain why this query is insecure and provide a secure alternative.

const query = `SELECT * FROM Users WHERE Username = '${username}' AND Password = '${password}'`;

SQL-Einfügungsangriffssimulation

Using my current database, simulate a SQL injection attack for the `SalesLT.uspGetCustomerOrderHistory` stored procedure and suggest fixes.

Beispiel für eine Überprüfung der gespeicherten Prozedur

Review the stored procedure `SalesLT.uspGetCustomerOrderHistory` in my current database for potential SQL injection vulnerabilities. Explain how unparameterized or improperly validated inputs could be exploited and recommend secure coding practices.

Beispiel zur Identifizierung von Sicherheitsproblemen

Review the `SalesLT.uspGetCustomerOrderHistory_Insecure` stored procedure. Identify any potential security issues in the implementation and then provide a revised version of the stored procedure that addresses these concerns without explicitly listing security best practices.

You can use the following T-SQL to create the stored procedure:

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.

Beispiel für die Speicherung vertraulicher Daten

Recommend secure methods for storing sensitive data in the `SalesLT.Address` table.

Beispiel zum Maskieren personenbezogener Daten

What are the best strategies or built-in features in my database for masking personal data in the `SalesLT.Customer` table?

Erzwingen der Verschlüsselung im Beispiel für Entity Framework Core

How can I configure my connection string in Entity Framework Core to enforce encryption and avoid exposing credentials?

Microsoft Entra-ID in Node.js Authentifizierungsbeispiel

In a Prisma or Node.js environment, how can I securely use Microsoft Entra ID authentication or managed identity with SQL Server instead of storing passwords?

Empfehlen von SQL Server-Optionen zum Sichern von Daten (Beispiel)

What SQL Server options should I enable or verify (for example, Always Encrypted, Transparent Data Encryption) to protect customer data when using ORMs like Sequelize or EF Core?

Teilen von Erfahrungen

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.