Compartilhar via


Início Rápido: Analisador de segurança

O GitHub Copilot auxilia os desenvolvedores na identificação e no endereçamento de riscos comuns de segurança em consultas de código SQL e de camada de aplicativo. Ele pode ajudar a detectar vulnerabilidades como injeção de SQL, dados superexpostos e padrões não seguros, especialmente para desenvolvedores sem uma forte experiência de segurança, fornecendo 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. Essa conexão permite que o participante do @mssql chat entenda o contexto do ambiente do banco de dados, permitindo sugestões precisas e com reconhecimento de contexto. Sem uma conexão de 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. Isso 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, ORMs 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. 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 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 ajudar a identificar consultas nãoparameterizadas, problemas de interpolação de cadeia de caracteres e uso indevido de SQL dinâmico, ao mesmo tempo em que recomenda alternativas mais seguras e parametrizadas adaptadas 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 usam configurações inseguras por padrão. O GitHub Copilot fornece diretrizes para criptografar conexões, mascarar ou proteger dados pessoais e alinhar-se com as práticas recomendadas de autenticação e autorização seguras 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 ORMs 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.