Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
GitHub Copilot pomaga deweloperom identyfikować i usuwać typowe zagrożenia bezpieczeństwa w kodzie SQL i zapytaniach w warstwie aplikacji. Może ona pomóc wykrywać luki w zabezpieczeniach, takie jak wstrzyknięcie kodu SQL, nadmiernie uwidoczone dane i niebezpieczne wzorce, zwłaszcza dla deweloperów bez silnego tła zabezpieczeń, zapewniając praktyczne, kontekstowe zalecenia podczas opracowywania.
Wprowadzenie
Upewnij się, że masz połączenie z bazą danych i masz otwarte aktywne okno edytora z rozszerzeniem MSSQL. To połączenie umożliwia uczestnikowi czatu @mssql zrozumienie kontekstu środowiska bazy danych, umożliwiając dokładne i kontekstowe sugestie. Bez połączenia z bazą danych uczestnik czatu nie będzie miał schematu ani kontekstu danych w celu zapewnienia znaczących odpowiedzi.
W poniższych przykładach użyto przykładowej bazy danych AdventureWorksLT2022, którą można pobrać ze strony głównej Przykładów i projektów społeczności programu Microsoft SQL Server.
Aby uzyskać najlepsze wyniki, dostosuj nazwy tabel i schematów, aby dopasować je do własnego środowiska.
Upewnij się, że czat zawiera @mssql prefiks. Na przykład wpisz @mssql swoje pytanie lub polecenie. Dzięki temu uczestnik czatu rozumie, że prosi o pomoc związaną z językiem SQL.
Wykrywanie i naprawianie zagrożeń bezpieczeństwa za pomocą narzędzia GitHub Copilot
GitHub Copilot pomaga deweloperom wykrywać i naprawiać typowe luki w zabezpieczeniach na wczesnym etapie procesu programowania, zanim dotrą do środowiska produkcyjnego. Niezależnie od tego, czy używasz nieprzetworzonych metod SQL, ORM, czy procedur składowanych, narzędzie GitHub Copilot może identyfikować niebezpieczne wzorce, wyjaśniać potencjalne zagrożenia i sugerować bezpieczniejsze alternatywy na podstawie kontekstu bazy danych. Jest to szczególnie przydatne dla deweloperów, którzy nie specjalizują się w zabezpieczeniach, ale muszą przestrzegać bezpiecznych praktyk kodowania.
Poniżej przedstawiono typowe przypadki użycia i przykłady tego, co można zadać za pośrednictwem uczestnika czatu.
Wykrywanie iniekcji SQL
Wstrzyknięcie kodu SQL jest jedną z najczęstszych i niebezpiecznych luk w zabezpieczeniach w aplikacjach bazy danych. GitHub Copilot może pomóc w zidentyfikowaniu nieparametrizowanych zapytań, problemów interpolacji ciągów i nieprawidłowego użycia dynamicznego języka SQL, jednocześnie zalecając bezpieczniejsze, sparametryzowane alternatywy dostosowane do kontekstu.
SqlAlchemy w przykładzie języka Python
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()
Przykład kodu SQL w języku JavaScript
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}'`;
Symulacja ataku polegający na wstrzyknięciu kodu SQL
Using my current database, simulate a SQL injection attack for the `SalesLT.uspGetCustomerOrderHistory` stored procedure and suggest fixes.
Zapoznaj się z przykładem procedury składowanej
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.
Przykład identyfikowania problemów z zabezpieczeniami
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
Ogólne sugestie dotyczące zabezpieczeń
Poza wstrzyknięciem kodu SQL wiele aplikacji baz danych domyślnie uwidacznia poufne dane lub używa niezabezpieczonych konfiguracji. GitHub Copilot zawiera wskazówki dotyczące szyfrowania połączeń, maskowania lub ochrony danych osobowych oraz dopasowywania ich do najlepszych rozwiązań dotyczących bezpiecznego uwierzytelniania i autoryzacji w wielu stosach programistycznych.
Przykład magazynu danych poufnych
Recommend secure methods for storing sensitive data in the `SalesLT.Address` table.
Przykład maskowania danych osobowych
What are the best strategies or built-in features in my database for masking personal data in the `SalesLT.Customer` table?
Przykład wymuszania szyfrowania w programie Entity Framework Core
How can I configure my connection string in Entity Framework Core to enforce encryption and avoid exposing credentials?
Przykład uwierzytelniania przy użyciu Microsoft Entra ID w 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?
Zalecane opcje programu SQL Server na potrzeby zabezpieczania przykładu danych
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?
Podziel się swoimi doświadczeniami
Aby pomóc nam udoskonalić i ulepszyć narzędzie GitHub Copilot dla rozszerzenia MSSQL, użyj następującego szablonu problemu GitHub, aby przesłać swoją opinię: GitHub Copilot Feedback
Podczas przesyłania opinii należy wziąć pod uwagę następujące kwestie:
Przetestowane scenariusze — daj nam znać obszary, na przykład tworzenie schematu, generowanie zapytań, zabezpieczenia, lokalizację.
Co się udało — opisz wszelkie doświadczenia, które przebiegły sprawnie, były pomocne lub przerosły twoje oczekiwania.
Problemy lub błędy — obejmują wszelkie problemy, niespójności lub mylące zachowania. Zrzuty ekranu lub nagrania ekranu są szczególnie przydatne.
Sugestie dotyczące poprawy — podziel się pomysłami na poprawę użyteczności, rozszerzaniem zasięgu lub ulepszaniem odpowiedzi w usłudze GitHub Copilot.
Treści powiązane
- Rozszerzenie GitHub Copilot for MSSQL dla programu Visual Studio Code
- Szybki przewodnik: korzystanie z czatu i wbudowanych sugestii GitHub Copilot
- Szybki start: generowanie kodu
- Szybki start: korzystanie z eksploratora schematu i projektanta
- Szybki start: korzystanie z konstruktora zapytań inteligentnych
- Szybki start: Asystent optymalizatora zapytań
- Szybki start: używanie narzędzia objaśniającego logikę biznesową
- Szybki start: pomocnik lokalizacji i formatowania
- Szybki start: generowanie danych na potrzeby testowania i pozorowania
- Ograniczenia i znane problemy