Partilhar via


Quickstart: Analisador de segurança

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.