Ataki typu SQL injection zdarzają się, gdy dane wprowadzane przez użytkownika jest nieprawidłowo zakodowany. Zazwyczaj dane wejściowe użytkownika to pewne dane, które użytkownik wysyła wraz z zapytaniem, tj. wartości w $_GET
, $_POST
, $_COOKIE
, $_REQUEST
lub $_SERVER
tablice. Jednak dane wejściowe użytkownika mogą również pochodzić z wielu innych źródeł, takich jak gniazda, zdalne strony internetowe, pliki itp. Dlatego naprawdę powinieneś traktować wszystko oprócz stałych (jak 'foobar'
) jako dane wejściowe użytkownika .
W opublikowanym kodzie mysql_real_escape_string
służy do kodowania (=escape) danych wejściowych użytkownika. Kod jest zatem poprawny, tj. nie pozwala na żadne ataki typu SQL injection.
Zauważ, że bardzo łatwo jest zapomnieć o wywołaniu mysql_real_escape_string
- i jeden raz wystarczy wprawnemu napastnikowi! Dlatego możesz chcieć użyć nowoczesnego PDO
z przygotowanymi wyciągami
zamiast adodb.