Sdílet prostřednictvím


Rychlý start: Analyzátor zabezpečení

GitHub Copilot pomáhá vývojářům při identifikaci a řešení běžných bezpečnostních rizik v kódu SQL a dotazech na aplikační vrstvu. Může pomoct odhalit ohrožení zabezpečení, jako je injektáž SQL, přeexponovaná data a nebezpečné vzory, zejména pro vývojáře bez silného zabezpečení, tím, že během vývoje poskytuje praktická doporučení s podporou kontextu.

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. Toto připojení umožňuje účastníkovi @mssql chatu porozumět kontextu vašeho databázového prostředí a umožnit přesné a kontextové návrhy. Bez připojení k databázi nebude účastník chatu mít 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. Tím zajistíte, že účastník chatu pochopí, ž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é SQL, ORM nebo uložené procedury, Může GitHub Copilot identifikovat nebezpečné vzory, vysvětlit potenciální rizika a navrhnout bezpečnější alternativy na základě kontextu databáze. To 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í.

Tady jsou 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 může pomoct identifikovat neparametrizované dotazy, problémy s interpolací řetězců a zneužití dynamického SQL a zároveň doporučovat bezpečnější a parametrizované alternativy přizpůsobené 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 ve výchozím nastavení používá nezabezpečené konfigurace. GitHub Copilot poskytuje pokyny pro šifrování připojení, maskování nebo ochranu osobních údajů a sladění s osvědčenými postupy zabezpečeného ověřování a autorizace napříč několika sadami vývojových sad.

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 ORMs 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í:

  • Otestované 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 zážitky, které se cítily hladce, 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 ke zlepšení – Sdílejte nápady na zlepšení použitelnosti, rozšíření pokrytí nebo vylepšení odpovědí GitHub Copilotu.