Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
GitHub Copilot ayuda a los desarrolladores a identificar y abordar los riesgos comunes de seguridad en las consultas de código SQL y de capa de aplicación. Puede ayudar a detectar vulnerabilidades como la inyección de CÓDIGO SQL, los datos sobreexpuestos y los patrones no seguros, especialmente para los desarrolladores sin un fondo de seguridad sólido, proporcionando recomendaciones prácticas y basadas en contexto durante el desarrollo.
Comienza
Asegúrese de que está conectado a una base de datos y de que tiene abierta una ventana del editor activa con la extensión MSSQL. Esta conexión permite al participante del @mssql chat comprender el contexto del entorno de base de datos, lo que permite sugerencias precisas y compatibles con el contexto. Sin una conexión de base de datos, el participante del chat no tendrá el esquema ni el contexto de datos para proporcionar respuestas significativas.
En los ejemplos siguientes se usa la AdventureWorksLT2022 base de datos de ejemplo, que puede descargar desde la página principal Ejemplos de Microsoft SQL Server y Proyectos de comunidad .
Para obtener los mejores resultados, ajuste los nombres de tabla y esquema para que coincidan con su propio entorno.
Asegúrese de que el chat incluye el @mssql prefijo. Por ejemplo, escriba @mssql seguido de su pregunta o indicador. Esto garantiza que el participante del chat comprenda que solicita ayuda relacionada con SQL.
Detección y corrección de riesgos de seguridad con GitHub Copilot
GitHub Copilot ayuda a los desarrolladores a detectar y corregir vulnerabilidades de seguridad comunes al principio del proceso de desarrollo, antes de llegar a producción. Tanto si usa PROCEDIMIENTOS almacenados, ORM o SQL sin procesar, GitHub Copilot puede identificar patrones no seguros, explicar posibles riesgos y sugerir alternativas más seguras en función del contexto de la base de datos. Esto es especialmente útil para los desarrolladores que no se especializan en seguridad, pero deben seguir prácticas de codificación seguras.
Estos son casos de uso comunes y ejemplos de lo que puede preguntar a través del participante del chat.
Detección de inyección de código SQL
La inyección de código SQL es una de las vulnerabilidades de seguridad más comunes y peligrosas en las aplicaciones de base de datos. GitHub Copilot puede ayudar a identificar consultas no parametrizadas, problemas de interpolación de cadenas y uso incorrecto de SQL dinámico, al tiempo que recomienda alternativas más seguras y parametrizadas adaptadas al contexto.
Ejemplo 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()
Ejemplo de SQL de 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}'`;
Simulación de ataque por inyección de código SQL
Using my current database, simulate a SQL injection attack for the `SalesLT.uspGetCustomerOrderHistory` stored procedure and suggest fixes.
Revisión del ejemplo de procedimiento almacenado
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.
Ejemplo de identificación de problemas de seguridad
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
Sugerencias generales de seguridad
Más allá de la inserción de SQL, muchas aplicaciones de base de datos exponen datos confidenciales o usan configuraciones no seguras de forma predeterminada. GitHub Copilot proporciona instrucciones para cifrar conexiones, enmascarar o proteger datos personales y alinearse con procedimientos recomendados de autenticación y autorización seguros en varias pilas de desarrollo.
Ejemplo de almacenamiento de datos confidenciales
Recommend secure methods for storing sensitive data in the `SalesLT.Address` table.
Ejemplo de enmascaramiento de datos personales
What are the best strategies or built-in features in my database for masking personal data in the `SalesLT.Customer` table?
Ejemplo de aplicación del cifrado en Entity Framework Core
How can I configure my connection string in Entity Framework Core to enforce encryption and avoid exposing credentials?
Ejemplo de autenticación de Microsoft Entra ID en 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?
Recomendación de opciones de SQL Server para proteger el ejemplo de datos
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?
Compartir la experiencia
Para ayudarnos a refinar y mejorar GitHub Copilot para la extensión MSSQL, use la siguiente plantilla de problema de GitHub para enviar sus comentarios: Comentarios de GitHub Copilot
Al enviar comentarios, considere la posibilidad de incluir:
Escenarios probados : háganos saber en qué áreas se ha centrado, por ejemplo, la creación de esquemas, la generación de consultas, la seguridad, la localización.
Lo que funcionó bien : describa cualquier experiencia que se sintiera suave, útil o superara sus expectativas.
Problemas o errores : incluya cualquier problema, incoherencias o comportamientos confusos. Las capturas de pantalla o las grabaciones de pantalla son especialmente útiles.
Sugerencias para mejorar : comparta ideas para mejorar la facilidad de uso, expandir la cobertura o mejorar las respuestas de GitHub Copilot.
Contenido relacionado
- Extensión de GitHub Copilot para MSSQL de Visual Studio Code
- Inicio rápido: Uso de sugerencias en línea y chat de GitHub Copilot
- Inicio rápido: Generación de código
- Inicio rápido: Uso del explorador de esquemas y el diseñador
- Inicio rápido: Uso del generador de consultas inteligentes
- Inicio rápido: Asistente del optimizador de consultas
- Inicio rápido: Uso del explicador de lógica de negocios
- Inicio rápido: Asistente de localización y formato
- Inicio rápido: Generación de datos para pruebas y simulación
- Limitaciones y problemas conocidos