Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O GitHub Copilot ajuda os desenvolvedores a identificar e resolver riscos comuns de segurança em consultas de código SQL e de camada de aplicativo. Ele detecta vulnerabilidades como injeção de SQL, dados superexpostos e padrões não seguros. Os desenvolvedores sem uma forte experiência de segurança podem usar o GitHub Copilot para obter recomendações práticas e com reconhecimento de contexto durante o desenvolvimento.
Introdução
Verifique se você está conectado a um banco de dados e abra uma janela do editor ativo com a extensão MSSQL. Quando você se conecta, o participante do @mssql chat entende o contexto do seu ambiente de banco de dados e pode fornecer sugestões precisas e com reconhecimento de contexto. Se você não se conectar a um banco de dados, o participante do chat não terá o esquema ou o contexto de dados para fornecer respostas significativas.
Os exemplos a seguir usam o banco de dados de exemplo AdventureWorksLT2022, que você pode baixar na página inicial dos Exemplos e Projetos da Comunidade do Microsoft SQL Server.
Para obter melhores resultados, ajuste os nomes de tabela e esquema para corresponder ao seu próprio ambiente.
Verifique se o chat inclui o @mssql prefixo. Por exemplo, digite @mssql seguido de sua pergunta ou instrução. Esse prefixo garante que o participante do chat entenda que você está solicitando assistência relacionada ao SQL.
Detectar e corrigir riscos de segurança com o GitHub Copilot
O GitHub Copilot ajuda os desenvolvedores a detectar e corrigir vulnerabilidades comuns de segurança no início do processo de desenvolvimento, antes de chegarem à produção. Se você estiver usando SQL bruto, estruturas de orm (mapeamento relacional de objeto) ou procedimentos armazenados, o GitHub Copilot pode identificar padrões não seguros, explicar riscos potenciais e sugerir alternativas mais seguras com base no contexto do banco de dados. Essa capacidade é especialmente útil para desenvolvedores que não se especializam em segurança, mas precisam seguir práticas de codificação seguras.
As seções a seguir descrevem casos de uso comuns e exemplos do que você pode perguntar por meio do participante do chat.
Detecçã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 ajudá-lo a identificar consultas nãoparameterizadas, problemas de interpolação de cadeia de caracteres e uso indevido do SQL dinâmico. Também recomenda alternativas mais seguras e parametrizadas que se ajustem ao seu contexto.
Exemplo de SQLAlchemy no 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 do 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 de injeção de SQL
Using my current database, simulate a SQL injection attack for the `SalesLT.uspGetCustomerOrderHistory` stored procedure and suggest fixes.
Examinar o 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 identificação de 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 dependem de configurações padrão inseguras.
O GitHub Copilot pode ajudar fornecendo orientações sobre como criptografar conexões, proteger ou mascarar dados pessoais e seguir práticas seguras de autenticação e autorização em várias pilhas de desenvolvimento.
Exemplo de armazenamento de dados confidenciais
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?
Impor criptografia 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 no 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 do SQL Server para proteger o exemplo de dados
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?
Compartilhar sua experiência
Para nos ajudar a refinar e melhorar o GitHub Copilot para a extensão MSSQL, use o seguinte modelo de problema do GitHub para enviar seus comentários: Comentários do GitHub Copilot
Ao enviar comentários, considere incluir:
Cenários testados: informe-nos em quais áreas você se concentrou, por exemplo, na criação do esquema, na geração de consultas, na segurança, na localização.
O que funcionou bem: descreva todas as experiências que se sentiram suaves, úteis ou excederam suas expectativas.
Problemas ou bugs: inclua 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 aprimorar as respostas do GitHub Copilot.
Conteúdo relacionado
- Extensão do GitHub Copilot para MSSQL para Visual Studio Code
- Início Rápido: Usar sugestões do GitHub Copilot embutidas e de chat
- Início Rápido: Gerar código
- Início Rápido: Usar o gerenciador de esquemas e o designer
- Início Rápido: Usar o construtor de consultas inteligente
- Início Rápido: Assistente de otimizador de consulta
- Início Rápido: Usar o explicador de lógica de negócios
- Início Rápido: Auxiliar de localização e formatação
- Início Rápido: Gerar dados para teste e mockagem
- Limitações e problemas conhecidos