Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
GitHub Copilot hilft Entwicklern, häufige Sicherheitsrisiken in SQL-Code- und Anwendungsebenenabfragen zu identifizieren und zu beheben. Es erkennt Sicherheitsrisiken wie SQL-Einfügung, überlastete Daten und unsichere Muster. Entwickler ohne starken Sicherheitshintergrund können GitHub Copilot verwenden, um praktische, kontextbezogene Empfehlungen während der Entwicklung zu erhalten.
Loslegen
Stellen Sie sicher, dass Sie mit einer Datenbank verbunden sind und ein aktives Editorfenster mit der MSSQL-Erweiterung geöffnet ist. Wenn Sie eine Verbindung herstellen, versteht der @mssql Chatteilnehmer den Kontext Ihrer Datenbankumgebung und kann genaue, kontextbezogene Vorschläge liefern. Wenn Sie keine Verbindung mit einer Datenbank herstellen, 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. Dieses Präfix stellt sicher, 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-, objektrelationale Zuordnungsframeworks (ORM) oder gespeicherte Prozeduren verwenden, kann GitHub Copilot unsichere Muster identifizieren, potenzielle Risiken erklären und sicherere Alternativen basierend auf Ihrem Datenbankkontext vorschlagen. Diese Fähigkeit ist besonders nützlich für Entwickler, die nicht auf Sicherheit spezialisiert sind, sondern sichere Codierungsmethoden befolgen müssen.
In den folgenden Abschnitten werden häufige Anwendungsfälle und Beispiele für das, was Sie über den Chatteilnehmer fragen können, beschrieben.
SQL-Einfügungserkennung
DIE SQL-Einfügung ist eine der häufigsten und gefährlichsten Sicherheitsrisiken in Datenbankanwendungen. GitHub Copilot kann Ihnen helfen, unparameterisierte Abfragen, Zeichenfolgeninterpolationsprobleme und Missbrauch dynamischer SQL zu identifizieren. Es empfiehlt außerdem sicherere parametrisierte Alternativen, die Ihrem Kontext entsprechen.
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
Neben der SQL-Einfügung machen viele Datenbankanwendungen vertrauliche Daten verfügbar oder verlassen sich auf unsichere Standardkonfigurationen.
GitHub Copilot kann helfen, indem es Anleitungen zum Verschlüsseln von Verbindungen bietet, personenbezogene Daten schützt oder maskiert und sichere Authentifizierungs- und Autorisierungspraktiken in verschiedenen Entwicklungsumgebungen einhält.
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 object-relational mapping (ORM) frameworks 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 eine Erfahrung, die glatt verlief, hilfreich war oder Ihre Erwartungen übertroffen hat.
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.
Verwandte Inhalte
- GitHub Copilot für MSSQL-Erweiterung für Visual Studio Code
- Schnellstart: Verwenden Sie Chat- und Inline-Vorschläge von GitHub Copilot
- Schnellstart: Generieren von Code
- Schnellstart: Verwenden des Schema-Explorers und des Designers
- Schnellstart: Verwenden des Intelligenten Abfrage-Generators
- Schnellstart: Abfrageoptimierer-Assistent
- Schnellstart: Verwenden der Geschäftslogik-Erklärung
- Schnellstart: Lokalisierungs- und Formatierungshilfsprogramm
- Schnellstart: Generieren von Daten zum Testen und Mocking
- Einschränkungen und bekannte Probleme