Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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.
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