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. Detecta vulnerabilidades como la inyección de CÓDIGO SQL, los datos sobreexpuestos y los patrones no seguros. Los desarrolladores sin un fondo de seguridad sólido pueden usar GitHub Copilot para obtener 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 activo con la extensión MSSQL. Al conectarse, el participante del @mssql chat entiende el contexto del entorno de base de datos y puede proporcionar sugerencias precisas y compatibles con el contexto. Si no se conecta a una base de datos, el participante del chat no tiene 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. Este prefijo 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 marcos de SQL sin procesar, asignaciones relacionales de objetos (ORM) o procedimientos almacenados, 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. Esta capacidad es especialmente útil para los desarrolladores que no se especializan en seguridad, pero deben seguir prácticas de codificación seguras.
En las secciones siguientes se describen los 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 ayudarle a identificar consultas no parametrizadas, problemas de interpolación de cadenas y uso incorrecto de SQL dinámico. También recomienda alternativas más seguras y parametrizadas que se ajusten 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 dependen de configuraciones predeterminadas no seguras.
GitHub Copilot puede ayudar proporcionando instrucciones sobre el cifrado de conexiones, protección o enmascaramiento de datos personales, y siguiendo las prácticas de autenticación y autorización seguras 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 object-relational mapping (ORM) frameworks 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 las experiencias que se sintieron suaves, útiles o superaron 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