Delen via


Quickstart: Beveiligingsanalyzer

GitHub Copilot helpt ontwikkelaars bij het identificeren en aanpakken van veelvoorkomende beveiligingsrisico's in SQL-code- en toepassingslaagquery's. Het kan helpen bij het detecteren van beveiligingsproblemen zoals SQL-injectie, overbelichte gegevens en onveilige patronen, met name voor ontwikkelaars zonder een sterke beveiligingsachtergrond, door praktische, contextbewuste aanbevelingen te bieden tijdens de ontwikkeling.

Aan de slag

Zorg ervoor dat u verbinding hebt met een database en een actief editorvenster hebt geopend met de MSSQL-extensie. Met deze verbinding kan de @mssql chatdeelnemer de context van uw databaseomgeving begrijpen en nauwkeurige en contextbewuste suggesties inschakelen. Zonder een databaseverbinding beschikt de chatdeelnemer niet over het schema of de gegevenscontext om zinvolle antwoorden te geven.

In de volgende voorbeelden wordt de AdventureWorksLT2022 voorbeelddatabase gebruikt, die u kunt downloaden van de startpagina van Microsoft SQL Server Samples en Community Projects .

Pas voor de beste resultaten de tabel- en schemanamen aan zodat deze overeenkomen met uw eigen omgeving.

Zorg ervoor dat de chat het @mssql voorvoegsel bevat. Typ bijvoorbeeld @mssql gevolgd door uw vraag of prompt. Dit zorgt ervoor dat de chatdeelnemer begrijpt dat u vraagt om hulp met betrekking tot SQL.

Beveiligingsrisico's detecteren en oplossen met GitHub Copilot

GitHub Copilot helpt ontwikkelaars bij het detecteren en oplossen van veelvoorkomende beveiligingsproblemen vroeg in het ontwikkelingsproces, voordat ze productie bereiken. Of u nu onbewerkte SQL-, ORM's of opgeslagen procedures gebruikt, GitHub Copilot kan onveilige patronen identificeren, potentiële risico's uitleggen en veiligere alternatieven voorstellen op basis van uw databasecontext. Dit is met name handig voor ontwikkelaars die niet gespecialiseerd zijn in beveiliging, maar die veilige coderingsprocedures moeten volgen.

Hier volgen veelvoorkomende gebruiksvoorbeelden en voorbeelden van wat u kunt vragen via de chatdeelnemer.

Detectie van SQL-injectie

SQL-injectie is een van de meest voorkomende en gevaarlijke beveiligingsproblemen in databasetoepassingen. GitHub Copilot kan helpen bij het identificeren van niet-geparameteriseerde query's, tekenreeksinterpolatieproblemen en misbruik van dynamische SQL, terwijl veiligere, geparameteriseerde alternatieven worden aanbevolen die zijn afgestemd op uw context.

SQLAlchemy in Python-voorbeeld

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

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

Simulatie van SQL-injectieaanvallen

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

Voorbeeld van opgeslagen procedure controleren

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.

Voorbeeld van beveiligingsproblemen identificeren

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

Algemene beveiligingssuggesties

Naast SQL-injectie maken veel databasetoepassingen gevoelige gegevens beschikbaar of gebruiken ze standaard onveilige configuraties. GitHub Copilot biedt richtlijnen voor het versleutelen van verbindingen, het maskeren of beveiligen van persoonlijke gegevens, en het afstemmen op veilige verificatie- en autorisatieprocedures voor meerdere ontwikkelstacks.

Voorbeeld van opslag van gevoelige gegevens

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

Voorbeeld van maskering van persoonlijke gegevens

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

Versleuteling afdwingen in Entity Framework Core-voorbeeld

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

Microsoft Entra-id in Node.js verificatievoorbeeld

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-opties aanbevelen voor het beveiligen van gegevensvoorbeeld

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?

Uw ervaring delen

Om ons te helpen GitHub Copilot voor de MSSQL-extensie te verfijnen en te verbeteren, gebruikt u de volgende GitHub-probleemsjabloon om uw feedback te verzenden: GitHub Copilot-feedback

Overweeg het volgende bij het indienen van feedback:

  • Geteste scenario's : laat ons weten op welke gebieden u zich richt, bijvoorbeeld het maken van schema's, het genereren van query's, beveiliging, lokalisatie.

  • Wat goed werkte – Beschrijf ervaringen die soepel aanvoelden, behulpzaam waren of uw verwachtingen overtroffen.

  • Problemen of bugs : neem eventuele problemen, inconsistenties of verwarrend gedrag op. Screenshots of schermopnamen zijn vooral nuttig.

  • Suggesties voor verbetering : deel ideeën voor het verbeteren van bruikbaarheid, het uitbreiden van de dekking of het verbeteren van de reacties van GitHub Copilot.