Command Palette

Search for a command to run...

Glosariusz SQL Injection (SQLi)

Co to jest SQL Injection (SQLi)?

SQL Injection (SQLi) to rodzaj ataku, w którym atakujący wprowadza złośliwe polecenie SQL do pola wejściowego, aby manipulować bazą danych.

Ten atak jest skierowany na aplikacje, które nie radzą sobie prawidłowo z walidacją i danymi wejściowymi użytkownika, co pozwala na nieautoryzowany dostęp do wrażliwych danych, takich jak hasła czy dane kart kredytowych itp.

Jak działa SQL Injection

Gdy aplikacja bezpośrednio uwzględnia dane wejściowe użytkownika w zapytaniu do bazy danych bez odpowiedniej walidacji, atakujący mogą zmodyfikować zachowanie zapytania, aby wprowadzić złośliwe polecenie SQL.

Na przykład:

SELECT * FROM users WHERE username = 'admin' AND password = '12345';

Atakujący mógłby wprowadzić:

' OR '1'='1

Co skutkuje:

SELECT * FROM users WHERE username = '' OR '1'='1' AND password = '';

To zawsze zwraca prawda, umożliwiając nieautoryzowany dostęp.

Dlaczego SQL Injection ma znaczenie w cyberbezpieczeństwie

SQL Injection to najniebezpieczniejsza i najstarsza technika w cyberbezpieczeństwie. Ten rodzaj ataku jest konsekwentnie wymieniany w OWASP Top 10.

Nawet małe luki pozwalają atakującemu na:

  • Dostęp, modyfikacja lub usunięcie danych
  • Ominięcie uwierzytelniania
  • Wykonywanie operacji administracyjnych na bazie danych.
  • Kompromitacja całego systemu.

Typowe rodzaje ataków SQL Injection

  • Klasyczny SQLi: Bezpośrednia iniekcja poprzez formularze internetowe lub parametry URL.
  • Ślepy SQLi: Atakujący pośrednio wnioskują o informacje z bazy danych (np. poprzez komunikaty o błędach lub czas odpowiedzi).
  • SQLi oparte na UNION: Wykorzystuje operator UNION do łączenia wyników z wielu zapytań.
  • SQLi oparte na błędach: Polega na komunikatach o błędach bazy danych do wyciągania informacji.
  • Ślepy SQLi oparty na czasie: Wykorzystuje opóźnienia w odpowiedzi serwera do zgadywania wyników zapytań.

Jak zapobiegać atakom SQL Injection

1. Używaj zapytań parametryzowanych (przygotowanych instrukcji)

Upewnij się, że polecenia SQL traktują dane wejściowe użytkownika jako dane, a nie kod wykonywalny.

cursor.execute("SELECT * FROM users WHERE username = ?", (username,))

2. Walidacja i sanitacja danych wejściowych

Waliduj wszystkie dane wejściowe od użytkowników, pozwalając tylko na oczekiwane znaki.

3. Używaj frameworków ORM

Frameworki takie jak Prisma, Hibernate itp. zmniejszają bezpośrednią obsługę SQL.

4. Zasada najmniejszych uprawnień

Ogranicz uprawnienia użytkownika, dając tylko te, które są potrzebne.

5. Regularne testy bezpieczeństwa

Używaj narzędzi do testowania bezpieczeństwa aplikacji, takich jak SAST, DAST lub IAST, aby wcześnie wykrywać wady związane z iniekcją.

Przykład w rzeczywistym świecie

Strona internetowa sklepu online doświadczyła naruszenia, w którym atakujący użyli iniekcji SQL w formularzu logowania, aby wyciągnąć dane kart kredytowych z bazy danych.

Powiązane terminy

Następne kroki

Gotowy, aby zabezpieczyć swoje aplikacje? Wybierz swoją dalszą drogę.

Dołącz do ponad 500 firm, które już zabezpieczają swoje aplikacje z Plexicus

SOC 2 Compliant
ISO 27001 Certified
Enterprise Ready