SQL Injection

Błąd ten umożliwia modyfikacje zapytania, czy nawet wykonanie dodatkowego zapytania (np. usuwającego rekordy). Załóżmy że mamy takie zapytanie MySQL

$zapytanie = “DELETE FROM users WHERE uzytkownik=’$_GET[‘$del_user’]'”;

Wszystko przebiegnie poprawnie jeśli zmienna $_GET[‘$del_user’] przyjmie wartość „Nowak”, co jedna gdy jakiś złośliwy użytkownik poprzez modyfikację adresu przypisze tej zmiennej wartość “Nowak’ OR ‘1’=’1 “? Wszystkie rekordy z tabeli users zostaną usunięte.

Aby takim atakom zapobiec należy sprawdzać wszystkie dane pochodzące od użytkownika. W przypadku bazy MySQL do tego celu należy stosować funkcję (która działa podobnie jak funkcja addslashes() , aczkolwiek do tego celu nadaje się lepiej )

mysql_real_escape_string();

Ponadto w swoim zapytaniu (w przypadku MySQL), niezależnie od typu danych obejmuj je w pojedynczych cudzysłowach, należy też dokładnie filtrować wszystkie dane pochodzące od użytkowników skryptu.

476 total views, 1 views today

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA
Change the CAPTCHA codeSpeak the CAPTCHA code