Baza wiedzy

SQL Injection (SQLi)

Typ ataku polegający na wstrzyknięciu złośliwego kodu SQL do zapytania aplikacji, aby odczytać, zmodyfikować lub usunąć dane z relacyjnej bazy danych.

← Wróć do bazy wiedzy

Na czym polega SQL Injection



Jeśli aplikacja buduje zapytania SQL na podstawie danych wejściowych użytkownika bez odpowiedniej walidacji i parametryzacji, atakujący może dopisać własny fragment kodu SQL. W efekcie system wykona zapytanie inne niż zamierzone przez twórcę aplikacji.



Skutki



  • odczyt poufnych danych z bazy,

  • modyfikacja lub usunięcie rekordów,

  • eskalacja uprawnień,

  • w niektórych konfiguracjach - wykonanie poleceń na serwerze.



Jak się bronić



  • używać zapytań parametryzowanych (prepared statements),

  • walidować dane wejściowe,

  • ograniczać uprawnienia konta bazy danych,

  • unikać bezpośredniego sklejania zapytań SQL ze stringów użytkownika.



Kiedy ryzyko nie występuje



Jeśli produkcyjna ścieżka odczytu nie korzysta z relacyjnej bazy danych, klasa ryzyk SQL Injection w tej warstwie po prostu nie istnieje. To jedna z różnic między systemami opartymi o SQL runtime a architekturą Flat-File CMS.

Przykład wdrożenia
Powiązane pojęcia
Kontakt
Masz pytanie techniczne?

Porozmawiajmy

Chętnie wyjaśnię, jak te pojęcia przekładają się na Twój projekt.

Skontaktuj się