SQL injection po ludzku, jak jedno pole wykrada całą bazę
Twoja strona rozmawia z bazą danych bez przerwy: przy logowaniu, wyszukiwaniu, wysyłce formularza. SQL injection polega na tym, że napastnik przemyca własne polecenie do tej rozmowy i baza je wykonuje.
Jak to działa (bez technikaliów)
Wyobraź sobie pole wyszukiwania. Zamiast słowa napastnik wpisuje spreparowany ciąg, który baza odczytuje nie jako tekst do znalezienia, lecz jako komendę: „pokaż wszystkie loginy i hasła". Jeśli strona nie oddziela danych od poleceń, baza posłusznie oddaje zawartość.
Efekt bywa opłakany: wyciek kont, haseł (nawet zaszyfrowanych, potem łamanych offline), danych klientów, a czasem podmiana treści albo założenie konta administratora.
To nie jest teoria
SQL injection stoi za wieloma głośnymi włamaniami do stron opartych o WordPress i Joomla, zwykle przez dziurawą wtyczkę lub rozszerzenie, nie sam rdzeń. Głośna luka w Joomla 3.7 (2017) to był właśnie SQL injection dostępny bez logowania.
Co Cię chroni
- Aktualizacje. Większość takich luk to błędy w konkretnej wtyczce, łatka je zamyka.
- Zapora aplikacyjna (WAF). Odsiewa typowe, zautomatyzowane próby, zanim dojdą do bazy.
- Zasada minimum uprawnień dla konta bazy danych, żeby ewentualne włamanie miało mniejszy zasięg.
- Kopie zapasowe: na wypadek, gdyby ktoś namieszał w danych.
Sam nie napiszesz łatki do cudzej wtyczki, ale możesz zadbać, żeby wszystko było aktualne i osłonięte. To robimy w ramach opieki, napisz do nas.