Bezpieczeństwo baz danych (SQL Injection)

Autor: coach1

Ochrona bazy danych: Ataki typu SQL Injection

Jako administrator i programista musisz założyć, że użytkownicy Twojej aplikacji mogą wprowadzić w formularzach (celowo lub przypadkiem) złośliwe dane. Najpoważniejszym błędem w aplikacjach webowych korzystających z baz danych jest podatność na ataki typu SQL Injection.

Na czym polega atak?

Atak ten polega na wstrzyknięciu (doklejeniu) złośliwego kodu SQL do zapytania poprzez pola formularza na stronie (np. w oknie logowania lub wyszukiwarce). Jeśli aplikacja nie filtruje odpowiednio tych danych, serwer bazy danych wykona ten kod, co może doprowadzić do ujawnienia haseł wszystkich klientów, usunięcia całych tabel, a nawet całkowitego przejęcia kontroli nad serwerem.

Jak się bronić? Prepared Statements

Absolutnym standardem obrony przed SQL Injection w nowoczesnym programowaniu są Zapytania Przygotowane (Prepared Statements). Zamiast wklejać zmienne z formularza bezpośrednio do ciągu znaków zapytania SQL, używamy tzw. "placeholderów" (często w postaci znaków zapytania). Kod SQL jest najpierw kompilowany na serwerze bazy, a dopiero w drugim kroku przesyłane są tam same parametry z formularza. Silnik bazy danych wie, że parametry to wyłącznie "dane wejściowe", a nie komendy do wykonania, co całkowicie i w 100% neutralizuje atak wstrzyknięcia.

Załącznik multimedialny

Miejsce na baner reklamowy Google AdSense w treści artykułu