Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de changer d’annuaire.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer d’annuaire.
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 détecte les vulnérabilités telles que l’injection SQL, les données surexposées et les modèles non sécurisés. Les développeurs sans arrière-plan de sécurité fort peuvent utiliser GitHub Copilot pour obtenir des recommandations pratiques et contextuelles 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. Lorsque vous vous connectez, le @mssql participant de conversation comprend le contexte de votre environnement de base de données et peut fournir des suggestions précises et prenant en compte le contexte. Si vous ne vous connectez pas à une 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. Ce préfixe 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 frameworks ORM (SQL, object-relational mapping) bruts ou des procédures stockées, 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. Cette capacité 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.
Les sections suivantes décrivent les 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 vous aider à identifier des requêtes non paramétrables, des problèmes d’interpolation de chaîne et une mauvaise utilisation de SQL dynamique. Il recommande également des alternatives plus sûres et paramétrables qui correspondent à 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 s’appuient sur des configurations par défaut non sécurisées.
GitHub Copilot peut vous aider en fournissant des conseils sur le chiffrement des connexions, la protection ou le masquage des données personnelles, et en suivant les pratiques d’authentification et d’autorisation sécurisées sur différentes 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 object-relational mapping (ORM) frameworks 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 : faites-nous part 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 se sont déroulées sans accrocs, ont été 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.
Contenu connexe
- Extension GitHub Copilot pour MSSQL pour Visual Studio Code
- Démarrage rapide : Utiliser les suggestions de conversation et intégrées de GitHub Copilot
- Démarrage rapide : Générer du code
- Démarrage rapide : Utiliser l’Explorateur de schémas et le concepteur
- Démarrage rapide : Utiliser le générateur de requêtes intelligent
- Démarrage rapide : Assistant Optimiseur de requête
- Démarrage rapide : Utiliser l’explicatif de logique métier
- Démarrage rapide : Assistance de localisation et de mise en forme
- Démarrage rapide : Générer des données à des fins de test et de simulation
- Limitations et problèmes connus