Partager via


Démarrage rapide : Analyseur de sécurité

GitHub Copilot aide les développeurs à identifier et à résoudre les risques de sécurité courants dans le code SQL et les requêtes de couche application. Il peut aider à détecter des vulnérabilités telles que l’injection SQL, les données surexposées et les modèles non sécurisés, en particulier pour les développeurs sans arrière-plan de sécurité fort, en fournissant des recommandations pratiques et prenant en charge le contexte pendant le développement.

Commencez

Vérifiez que vous êtes connecté à une base de données et que vous disposez d’une fenêtre d’éditeur active ouverte avec l’extension MSSQL. Cette connexion permet au @mssql participant au chat de comprendre le contexte de votre environnement de base de données, ce qui permet des suggestions précises et adaptées au contexte. Sans connexion de base de données, le participant de conversation ne dispose pas du schéma ou du contexte de données pour fournir des réponses significatives.

Les exemples suivants utilisent l’exemple AdventureWorksLT2022 de base de données, que vous pouvez télécharger à partir de la page d’accueil Exemples microsoft SQL Server et Projets communautaires .

Pour obtenir de meilleurs résultats, ajustez les noms de table et de schéma pour qu’ils correspondent à votre propre environnement.

Assurez-vous que la conversation inclut le @mssql préfixe. Par exemple, tapez @mssql suivi de votre question ou de votre invite. Cela garantit que le participant de conversation comprend que vous demandez de l’aide liée à SQL.

Détecter et corriger les risques de sécurité avec GitHub Copilot

GitHub Copilot aide les développeurs à détecter et à corriger les vulnérabilités de sécurité courantes au début du processus de développement, avant qu’ils atteignent la production. Que vous utilisiez des procédures SQL, ORMs ou stockées brutes, GitHub Copilot peut identifier des modèles non sécurisés, expliquer les risques potentiels et suggérer des alternatives plus sûres en fonction de votre contexte de base de données. Cela est particulièrement utile pour les développeurs qui ne se spécialisent pas dans la sécurité, mais doivent suivre les pratiques de codage sécurisées.

Voici des cas d’usage courants et des exemples de ce que vous pouvez demander via le participant de conversation.

Détection d’injection SQL

L’injection SQL est l’une des vulnérabilités de sécurité les plus courantes et dangereuses dans les applications de base de données. GitHub Copilot peut aider à identifier les requêtes non paramétrables, les problèmes d’interpolation de chaîne et l’utilisation incorrecte de SQL dynamique, tout en recommandant des alternatives plus sécurisées et paramétrables adaptées à votre contexte.

Exemple de SQLAlchemy en 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()

Exemple SQL JavaScript

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}'`;

Simulation d’attaque par injection SQL

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

Examiner l’exemple de procédure stockée

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.

Exemple d’identification des problèmes de sécurité

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

Suggestions de sécurité générales

Au-delà de l’injection SQL, de nombreuses applications de base de données exposent des données sensibles ou utilisent des configurations non sécurisées par défaut. GitHub Copilot fournit des conseils pour chiffrer les connexions, masquer ou protéger des données personnelles, et s’aligner sur les meilleures pratiques d’authentification et d’autorisation sécurisées sur plusieurs piles de développement.

Exemple de stockage de données sensibles

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

Exemple de masquage de données personnelles

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

Appliquer le chiffrement dans l’exemple Entity Framework Core

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

Exemple d’authentification Microsoft Entra dans Node.js

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?

Recommander des options SQL Server pour sécuriser des données - Exemple

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?

Partager votre expérience

Pour nous aider à affiner et améliorer GitHub Copilot pour l’extension MSSQL, utilisez le modèle de problème GitHub suivant pour envoyer vos commentaires : Commentaires GitHub Copilot

Lors de l’envoi de commentaires, envisagez d’inclure :

  • Scénarios testés : informez-nous des domaines sur lesquels vous vous êtes concentré, par exemple, la création de schéma, la génération de requêtes, la sécurité, la localisation.

  • Ce qui a bien fonctionné – Décrivez toutes les expériences qui ont semblé fluides, utiles ou ont dépassé vos attentes.

  • Problèmes ou bogues : incluez des problèmes, des incohérences ou des comportements déroutants. Les captures d’écran ou les enregistrements d’écran sont particulièrement utiles.

  • Suggestions d’amélioration : partagez des idées pour améliorer la facilité d’utilisation, développer la couverture ou améliorer les réponses de GitHub Copilot.