Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
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.
Rozpocznij
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.
- Pracuję z
SQLAlchemy
wPython
nad moim bieżącym schematem bazy danychSalesLT
. Sprawdź następująceSQLAlchemy
zapytanie pod kątem potencjalnych zagrożeń bezpieczeństwa, takich jakSQL
wstrzyknięcie kodu, nadmierne pobieranie lub problemy z wydajnością. Jeśli ma to zastosowanie, zasugeruj ulepszenia przy użyciu sparametryzowanych zapytań, buforowania połączeń i innych bezpiecznychSQL Server
rozwiązań w celu zapewnienia wydajności i bezpieczeństwa.
query = f"SELECT * FROM SalesLT.Customer WHERE LastName = '{user_input}'"
result = engine.execute(query).fetchall()
- Przeanalizuj następujące
JavaScript
SQL
zapytanie pod kątem potencjalnych luk w zabezpieczeniach. Identyfikuj zagrożenia, takie jakSQL
iniekcja, nadmierne pobieranie i złe praktyki uwierzytelniania. Wyjaśnij, dlaczego to zapytanie jest niezabezpieczone i zapewnia bezpieczną alternatywę.
const query = `SELECT * FROM Users WHERE Username = '${username}' AND Password = '${password}'`;
Korzystając z mojej bieżącej bazy danych, zasymuluj atak typu
SQL
na procedurę składowanąSalesLT.uspGetCustomerOrderHistory
i zasugeruj poprawki.Przejrzyj procedurę
SalesLT.uspGetCustomerOrderHistory
składowaną w bieżącej bazie danych pod kątem potencjalnych luk w zabezpieczeniach polegających na wstrzyknięciu kodu SQL. Wyjaśnij, jak niesparametrizowane lub nieprawidłowo zweryfikowane dane wejściowe mogą być wykorzystywane i zaleca się stosowanie bezpiecznych praktyk kodowania.Przejrzyj składowaną procedurę
SalesLT.uspGetCustomerOrderHistory_Insecure
. Zidentyfikuj wszelkie potencjalne problemy z zabezpieczeniami w implementacji, a następnie podaj poprawioną wersję procedury składowanej, która rozwiązuje te problemy bez jawnego wyświetlania listy najlepszych rozwiązań w zakresie zabezpieczeń.
Aby utworzyć procedurę składowaną, możesz użyć następującego języka T-SQL:
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.
Zaleca się stosowanie bezpiecznych metod przechowywania poufnych danych w
SalesLT.Address
tabeli.Jakie są najlepsze strategie lub wbudowane funkcje w mojej bazie danych na potrzeby maskowania danych osobowych w
SalesLT.Customer
tabeli?Jak mogę skonfigurować ciąg połączenia w
Entity Framework Core
, aby wymusić szyfrowanie i uniknąć uwidaczniania poświadczeń?W środowisku
Prisma
lub Node.js, w jaki sposób bezpiecznie używać uwierzytelniania Microsoft Entra ID lub zarządzanej tożsamościSQL Server
zamiast przechowywania haseł?Jakie
SQL Server
opcje należy włączyć lub zweryfikować (na przykładAlways Encrypted
,Transparent Data Encryption
), aby chronić dane klientów podczas korzystania z orm, takich jak Sequelize lub EF Core?
Opinia: Analizator zabezpieczeń
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 start: korzystanie z sugestii dotyczących czatu i wbudowanego rozwiązania GitHub Copilot (wersja zapoznawcza)
- Szybki start: generowanie kodu (wersja zapoznawcza)
- Szybki start: korzystanie z Eksploratora schematów i projektanta (wersja zapoznawcza)
- Szybki start: korzystanie z narzędzia Smart Query Builder (wersja zapoznawcza)
- Szybki start: Asystent optymalizatora zapytań (wersja zapoznawcza)
- Szybki start: korzystanie z narzędzia objaśniającego logikę biznesową (wersja zapoznawcza)
- Szybki start: pomocnik lokalizacji i formatowania (wersja zapoznawcza)
- Szybki start: generowanie danych na potrzeby testowania i pozorowania (wersja zapoznawcza)
- Ograniczenia i znane problemy