Megosztás:


Rövid útmutató: Biztonsági elemző

A GitHub Copilot segít a fejlesztőknek az SQL-kód- és alkalmazásréteg-lekérdezések gyakori biztonsági kockázatainak azonosításában és kezelésében. Olyan biztonsági réseket észlel, mint az SQL-injektálás, a túlexponált adatok és a nem biztonságos minták. Az erős biztonsági háttérrel nem rendelkező fejlesztők a GitHub Copilot használatával gyakorlati, környezettudatos javaslatokat kaphatnak a fejlesztés során.

Első lépések

Győződjön meg arról, hogy csatlakozik egy adatbázishoz, és meg van nyitva egy aktív szerkesztőablak az MSSQL kiterjesztéssel. Amikor csatlakozik, a @mssql csevegés résztvevői megértik az adatbázis-környezet kontextusát, és pontos, környezettudatos javaslatokat tehetnek. Ha nem csatlakozik adatbázishoz, a csevegés résztvevője nem rendelkezik a sémával vagy az adatkörnyezettel, hogy értelmes válaszokat adjon.

Az alábbi példák a AdventureWorksLT2022 mintaadatbázist használják, amelyet a Microsoft SQL Server-minták és közösségi projektek kezdőlapjáról tölthet le.

A legjobb eredmény érdekében módosítsa a táblázat- és sémaneveket a saját környezetének megfelelően.

Győződjön meg arról, hogy a csevegés tartalmazza az @mssql előtagot. Írja be például a @mssql jel után a kérdését vagy felszólítását. Ez az előtag biztosítja, hogy a csevegés résztvevője megértse, hogy SQL-hez kapcsolódó segítséget kér.

Biztonsági kockázatok észlelése és javítása a GitHub Copilottal

A GitHub Copilot segít a fejlesztőknek észlelni és kijavítani a gyakori biztonsági réseket a fejlesztési folyamat korai szakaszában, mielőtt elérnék az éles üzemet. Függetlenül attól, hogy nyers SQL-t, objektum-relációs leképezési (ORM-) keretrendszereket vagy tárolt eljárásokat használ, a GitHub Copilot azonosíthatja a nem biztonságos mintákat, elmagyarázhatja a lehetséges kockázatokat, és biztonságosabb alternatívákat javasolhat az adatbázis-környezet alapján. Ez a képesség különösen hasznos azoknak a fejlesztőknek, akik nem a biztonságra specializálódnak, de biztonságos kódolási eljárásokat kell követnie.

Az alábbi szakaszok a gyakori használati eseteket és példákat ismertetik arra, hogy mit kérdezhet meg a csevegés résztvevőin keresztül.

SQL-injektálás észlelése

Az SQL-injektálás az adatbázis-alkalmazások egyik leggyakoribb és legveszélyesebb biztonsági rése. A GitHub Copilot segíthet azonosítani a nem paraméterezett lekérdezéseket, a szöveg interpolációs problémákat és a dinamikus SQL helytelen használatát. A környezetnek megfelelő biztonságosabb, paraméterezett alternatívákat is javasol.

SQLAlchemy a Python-példában

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

JavaScript SQL-példa

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

SQL-injektálási támadás szimulációja

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

A tárolt eljárásra vonatkozó példa áttekintése

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.

Biztonsági problémák azonosítása – példa

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

Általános biztonsági javaslatok

Az SQL-injektáláson túl számos adatbázis-alkalmazás tesz elérhetővé bizalmas adatokat, vagy nem biztonságos alapértelmezett konfigurációkra támaszkodik.

A GitHub Copilot segítséget nyújthat a kapcsolatok titkosításával, a személyes adatok védelmével vagy maszkolásával, valamint a különböző fejlesztési veremek biztonságos hitelesítési és engedélyezési eljárásainak követésével.

Bizalmas adattárolási példa

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

Személyes adatok maszkolása – példa

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

Titkosítás kényszerítése az Entity Framework Core-példában

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

Microsoft Entra-azonosító Node.js hitelesítési példában

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?

Sql Server-beállítások ajánlása adat biztonságossá tételéhez

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?

Ossza meg tapasztalatait

Az MSSQL-bővítményHez tartozó GitHub Copilot pontosításához és fejlesztéséhez használja a következő GitHub-problémasablont a visszajelzés elküldéséhez: GitHub Copilot Feedback

Visszajelzés küldésekor fontolja meg a következőket:

  • Tesztelt forgatókönyvek: Tudassa velünk, hogy mely területekre összpontosított, például sémalétrehozásra, lekérdezésgenerálásra, biztonságra, honosításra.

  • Ami jól működött: Ismertesse azokat a tapasztalatokat, amelyek zökkenőmentesnek, hasznosnak mutattak, vagy amelyek meghaladták az Ön elvárásait.

  • Problémák vagy hibák: Tartalmazzon bármilyen problémát, következetlenséget vagy zavaró viselkedést. A képernyőképek és a képernyőfelvételek különösen hasznosak.

  • Fejlesztési javaslatok: Ötletek megosztása a használhatóság javítására, a lefedettség bővítésére vagy a GitHub Copilot válaszainak javítására.