Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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.
Související obsah
- Rozšíření GitHub Copilot for MSSQL pro Visual Studio Code
- Rychlý start: Použití chatu a vložených návrhů GitHub Copilotu
- Rychlý start: Generování kódu
- Rychlý start: Použití Průzkumníka schémat a návrháře
- Rychlý start: Použití tvůrce inteligentních dotazů
- Rychlý start: Pomocník pro optimalizaci dotazů
- Rychlý start: Použití vysvětlení obchodní logiky
- Rychlý start: Pomocná rutina lokalizace a formátování
- Rychlý start: Generování dat pro testování a napodobování
- Omezení a známé problémy