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 ajuda os programadores a identificar e abordar riscos de segurança comuns em consultas de código SQL e de nível de aplicação. Deteta vulnerabilidades como injeção SQL, dados sobreexpostos e padrões inseguros. Desenvolvedores sem forte formação em segurança podem usar o GitHub Copilot para obter recomendações práticas e contextualizadas durante o desenvolvimento.
Introdução
Certifica-te de que estás ligado a uma base de dados e que tens uma janela de editor ativa aberta com a extensão MSSQL. Quando se liga, o participante @mssql do chat compreende o contexto do seu ambiente de base de dados e pode dar sugestões precisas e conscientes do contexto. Se não se ligar a uma base de dados, o participante do chat não tem o esquema ou 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. Este prefixo garante que o participante do chat percebe que está a pedir assistência relacionada com 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. Quer esteja a usar SQL bruto, frameworks de mapeamento objeto-relacional (ORM) ou procedimentos armazenados, o GitHub Copilot pode identificar padrões inseguros, explicar riscos potenciais e sugerir alternativas mais seguras com base no contexto da sua base de dados. Esta capacidade é especialmente útil para programadores que não se especializam em segurança, mas que precisam de seguir práticas de codificação segura.
As secções seguintes descrevem casos de uso comuns e exemplos do que pode perguntar através do participante do chat.
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 cadeias e uso indevido de SQL dinâmico. Também recomenda alternativas mais seguras e parametrizadas que se adaptem 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
Para além da injeção SQL, muitas aplicações de bases de dados expõem dados sensíveis ou dependem de configurações predeterminadas inseguras.
O GitHub Copilot pode ajudar fornecendo orientações sobre encriptação de ligações, proteção ou ocultação de dados pessoais, e seguindo práticas seguras de autenticação e autorização 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 object-relational mapping (ORM) frameworks 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 que áreas se focou, por exemplo, criação de esquemas, geração de consultas, segurança, localização.
O que funcionou bem: Descreva quaisquer experiências que tenham sido tranquilas, úteis ou que tenham superado as suas expectativas.
Problemas ou erros: Inclua quaisquer problemas, inconsistências ou comportamentos inesperados. Capturas de tela ou gravações de tela são especialmente úteis.
Sugestões para melhoria: Partilhe ideias para melhorar a usabilidade, expandir a cobertura ou melhorar as respostas do GitHub Copilot.
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