AWWW-1st3.6-w13.tresc-1.0-Slajd8
SQL Injection (2)
Co by się stało, gdyby do pola formularza użytkownik wprowadził nie identyfikator produktu, lecz łańcuch znakowy podobny do przedstawionego na slajdzie? Ponieważ omawiany serwlet Java po prostu dokleja wartość otrzymanego parametru do szablonu zapytania SQL, to wykonane byłoby zapytanie zupełnie odmienne od tego, którego oczekiwał programista tworzący serwlet. Tym razem zapytanie nie zwraca opisu żadnego produktu, lecz zamiast tego pobiera inne, prawdopodobnie poufne dane z bazy danych. Tego typu atak nazywany jest właśnie atakiem SQL Injection.
Uniknięcie takich ataków jest możliwe, o ile programista nie będzie łatwowiernie wykonywać kodu poleceń budowanych w oparciu o niesprawdzone parametry przekazane przez użytkownika końcowego. Gdyby wcześniej przeprowadzić walidację otrzymanego parametru lub posłużyć się parametryzowanym obiektem zapytania JDBC, nie doszło by do takiego zagrożenia.