Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
O GitHub Copilot auxilia os desenvolvedores a identificar e abordar riscos de segurança comuns em consultas de código SQL e camada de aplicativo. Ele pode ajudar a detetar vulnerabilidades como injeção de SQL, dados superexpostos e padrões inseguros, especialmente para desenvolvedores sem um forte histórico de segurança, fornecendo recomendações práticas e sensíveis ao contexto durante o desenvolvimento.
Introdução
Verifique se você está conectado a um banco de dados e se uma janela do editor ativo está aberta com a extensão MSSQL. Essa conexão permite que o participante do bate-papo @mssql compreenda o contexto do seu ambiente de banco de dados, permitindo sugestões precisas e sensíveis ao contexto. Sem uma conexão de banco de dados, o participante do bate-papo não terá o esquema ou o contexto de dados para fornecer respostas significativas.
Os exemplos a seguir usam o AdventureWorksLT2022 banco de dados de exemplo, que você pode baixar da home page de Exemplos e Projetos da Comunidade do Microsoft SQL Server .
Para obter melhores resultados, ajuste os nomes de tabelas e esquemas para corresponder ao seu próprio ambiente.
Certifique-se de que o chat inclui o prefixo @mssql . Por exemplo, digite @mssql seguido de a sua pergunta ou solicitação. Isso garante que o participante do bate-papo entenda que você está solicitando assistência relacionada ao SQL.
Detete e corrija riscos de segurança com o GitHub Copilot
O GitHub Copilot ajuda os desenvolvedores a detetar e corrigir vulnerabilidades de segurança comuns no início do processo de desenvolvimento, antes que elas cheguem à produção. Se você estiver usando SQL bruto, ORMs ou procedimentos armazenados, o GitHub Copilot pode identificar padrões inseguros, explicar riscos potenciais e sugerir alternativas mais seguras com base no contexto do banco de dados. Isso é especialmente útil para desenvolvedores que não se especializam em segurança, mas precisam seguir práticas de codificação seguras.
Aqui estão casos de uso comuns e exemplos do que você pode perguntar através do participante do bate-papo.
Deteção de injeção de SQL
A injeção de SQL é uma das vulnerabilidades de segurança mais comuns e perigosas em aplicativos de banco de dados. O GitHub Copilot pode ajudar a identificar consultas não parametrizadas, problemas de interpolação de cadeia de caracteres e uso indevido de SQL dinâmico, ao mesmo tempo em que recomenda alternativas parametrizadas mais seguras e adaptadas ao seu contexto.
Exemplo de SQLAlchemy em 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()
Exemplo de SQL em 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}'`;
Simulação de ataque por injeção SQL
Using my current database, simulate a SQL injection attack for the `SalesLT.uspGetCustomerOrderHistory` stored procedure and suggest fixes.
Ver exemplo de procedimento armazenado
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.
Exemplo de identificar problemas de segurança
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
Sugestões gerais de segurança
Além da injeção de SQL, muitos aplicativos de banco de dados expõem dados confidenciais ou usam configurações inseguras por padrão. O GitHub Copilot fornece orientação para criptografar conexões, mascarar ou proteger dados pessoais e alinhar com as práticas recomendadas de autenticação e autorização seguras em várias pilhas de desenvolvimento.
Exemplo de armazenamento de dados sensíveis
Recommend secure methods for storing sensitive data in the `SalesLT.Address` table.
Exemplo de mascaramento de dados pessoais
What are the best strategies or built-in features in my database for masking personal data in the `SalesLT.Customer` table?
Aplicar encriptação no exemplo do Entity Framework Core
How can I configure my connection string in Entity Framework Core to enforce encryption and avoid exposing credentials?
Exemplo de autenticação do Microsoft Entra ID em 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?
Recomendar opções de SQL Server para proteger dados exemplo
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?
Partilhar a sua experiência
Para nos ajudar a refinar e melhorar o Copilot do GitHub para a extensão MSSQL, use o seguinte modelo de problema do GitHub para enviar seus comentários: Feedback do Copiloto do GitHub
Ao enviar comentários, considere incluir:
Cenários testados – Diga-nos em quais áreas você se focou, por exemplo, criação de esquema, geração de consultas, segurança, localização.
O que funcionou bem – Descreva todas as experiências que foram suaves, úteis ou que excederam as suas expectativas.
Problemas ou bugs – Inclua quaisquer problemas, inconsistências ou comportamentos confusos. Capturas de tela ou gravações de tela são especialmente úteis.
Sugestões de melhoria – Compartilhe ideias para melhorar a usabilidade, expandir a cobertura ou melhorar as respostas do Copiloto do GitHub.
Conteúdo relacionado
- Extensão GitHub Copilot for MSSQL para Visual Studio Code
- Início Rápido: Usa o chat e sugestões inline do GitHub Copilot
- Quickstart: Gerar código
- Início rápido: Use o explorador de esquemas e o designer
- Início rápido: Use o construtor inteligente de consultas
- Quickstart: Assistente otimizador de consultas
- Quickstart: Use o explicador de lógica de negócio
- Quickstart: Ajuda de localização e formatação
- Guia Rápido: Gerar dados para testes e simulação
- Problemas conhecidos e de limitações