Dyskusja:PHP/SQL Injection

Treść strony nie jest dostępna w innych językach.
Z Wikibooks, biblioteki wolnych podręczników.

Specjalnie użyłem $_GET[id] zamiast $_GET['id'] i " zamiast ', aby nie komplikować składni MySQLowego query

mysql_query('SELECT zamowienia FROM klienci WHERE id=\''.$_GET['id'].'\'');

--Sniper89 01:22, 7 lip 2007 (CEST)[odpowiedz]

1. Magic Quotes można wyłączyć za pomocą ini_set(). Problem może wystąpić, gdy ktoś użył dyrektywy php_admin_* w konfiguracji apache'a - to uniemożliwia zmianę, ale osobiście się nie spotkałem z czymś takim. 2. Funkcje mysql nie pozwalają aktualnie na wysyłanie więcej niż jednego zapytania jednocześnie 3. Warto gdzieś (najlepiej w boxie ostrzegawczym) zaznaczyć, że Magic Quotes od PHP6 już nie istnieje! Wiem, że jeszcze nie wyszło. 4. Zamiast proponować komuś funkcję stripslashes lepiej zaproponować napisanie własnej funkcji, która sprawdzi czy Magic Quotes jest włączone i ew. odwróci jej efekt. Od razu przestrzegam przed zabawianiem się w Magic Quotes po całej tablicy GET, POST i COOKIE, ponieważ mogą tam zostać zapisane np. tablice w przypadku używania w formularzru nazw tab[0], tab[1] ... SQLInjection to dojść obszerny temat, może potem podrzucę jakiś materiał ;-] --SaJen 14:17, 24 sty 2009 (CET)[odpowiedz]

mysql_escape_string[edytuj]

Funkcja mysql_escape_string jest przestarzała i posiada luki. Należy zastosować funkcję mysql_real_escape_string choć i to nie wyczerpuje tematu. 217.67.201.162 (dyskusja) 13:59, 5 lip 2010 (CEST)[odpowiedz]