Sdílet prostřednictvím


Rychlý start: Analyzátor zabezpečení

GitHub Copilot pomáhá vývojářům identifikovat a řešit běžná rizika zabezpečení v kódu SQL a dotazech na aplikační vrstvu. Detekuje ohrožení zabezpečení, jako je injektáž SQL, přeexponovaná data a nebezpečné vzory. Vývojáři bez silného zabezpečení můžou pomocí GitHub Copilotu získat praktická doporučení s podporou kontextu během vývoje.

Začínáme

Ujistěte se, že jste připojení k databázi a máte otevřené okno aktivního editoru s rozšířením MSSQL. Když se připojíte, @mssql účastník chatu rozumí kontextu vašeho databázového prostředí a může poskytnout přesné návrhy s podporou kontextu. Pokud se nepřipojíte k databázi, účastník chatu nemá schéma ani datový kontext, aby poskytoval smysluplné odpovědi.

Následující příklady používají AdventureWorksLT2022 ukázkovou databázi, kterou si můžete stáhnout z domovské stránky Ukázky microsoft SQL Serveru a projekty komunity .

Nejlepších výsledků dosáhnete, když upravíte názvy tabulek a schémat tak, aby odpovídaly vašemu vlastnímu prostředí.

Ujistěte se, že chat obsahuje předponu @mssql . Například zadejte @mssql svůj dotaz nebo výzvu. Tato předpona zajišťuje, že účastník chatu rozumí tomu, že žádáte o pomoc související s SQL.

Detekce a oprava bezpečnostních rizik pomocí GitHub Copilotu

GitHub Copilot pomáhá vývojářům zjišťovat a opravovat běžná ohrožení zabezpečení v rané fázi procesu vývoje, než se dostanou do produkčního prostředí. Bez ohledu na to, jestli používáte nezpracované architektury SQL, objektově relační mapování (ORM) nebo uložené procedury, GitHub Copilot dokáže identifikovat nebezpečné vzory, vysvětlit potenciální rizika a navrhovat bezpečnější alternativy na základě kontextu databáze. Tato schopnost je užitečná zejména pro vývojáře, kteří se nespecializují na zabezpečení, ale potřebují dodržovat postupy zabezpečeného kódování.

Následující části popisují běžné případy použití a příklady toho, co se můžete zeptat prostřednictvím účastníka chatu.

Detekce injektáže SQL

Injektáž SQL je jednou z nejběžnějších a nebezpečných ohrožení zabezpečení v databázových aplikacích. GitHub Copilot vám může pomoct identifikovat neparametrizované dotazy, problémy s interpolací řetězců a zneužití dynamického SQL. Také doporučuje bezpečnější a parametrizované alternativy, které odpovídají vašemu kontextu.

Příklad SQLAlchemy v Pythonu

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()

Příklad JavaScript SQL

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}'`;

Simulace útoku prostřednictvím injektáže SQL

Using my current database, simulate a SQL injection attack for the `SalesLT.uspGetCustomerOrderHistory` stored procedure and suggest fixes.

Příklad kontroly uložené procedury

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.

Příklad identifikace problémů se zabezpečením

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

Obecné návrhy zabezpečení

Kromě injektáže SQL zpřístupňuje mnoho databázových aplikací citlivá data nebo spoléhá na nezabezpečené výchozí konfigurace.

GitHub Copilot může pomoct tím, že poskytuje pokyny k šifrování připojení, ochraně nebo maskování osobních údajů a dodržování zabezpečených postupů ověřování a autorizace napříč různými vývojovými zásobníky.

Příklad úložiště citlivých dat

Recommend secure methods for storing sensitive data in the `SalesLT.Address` table.

Příklad maskování osobních údajů

What are the best strategies or built-in features in my database for masking personal data in the `SalesLT.Customer` table?

Příklad vynucení šifrování v Entity Framework Core

How can I configure my connection string in Entity Framework Core to enforce encryption and avoid exposing credentials?

Microsoft Entra ID v příkladu ověřování 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?

Doporučení možností SQL Serveru pro zabezpečení příkladu dat

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?

Podělte se o své zkušenosti

Pokud nám chcete pomoct upřesnit a vylepšit GitHub Copilot pro rozšíření MSSQL, odešlete zpětnou vazbu pomocí následující šablony problému Na GitHubu: Váš názor na GitHub Copilot

Při odesílání zpětné vazby zvažte následující:

  • Testované scénáře: Dejte nám vědět, na které oblasti jste se zaměřili, například na vytváření schématu, generování dotazů, zabezpečení, lokalizaci.

  • Co dobře fungovalo: Popište všechny zkušenosti, které byly plynulé, užitečné nebo překročily vaše očekávání.

  • Problémy nebo chyby: Zahrňte všechny problémy, nekonzistence nebo matoucí chování. Snímky obrazovky nebo nahrávky obrazovky jsou užitečné hlavně.

  • Návrhy pro zlepšení: Sdílejte nápady na zlepšení použitelnosti, rozšíření pokrytí nebo vylepšení odpovědí GitHub Copilotu.