Nije dovoljno koristiti samo
mysql_real_escape_string jer u odredjenim situacijama (visestruki kveriji u jednom pozivu funkcije) je moguce zaobici ovaj vid zastite ...
Npr:
PHP kôd:
$id = "5; DELETE FROM users";
$id = mysql_real_escape_string($id);
mysql_query("SELECT * FROM users WHERE id={$id}");
U ovom slucaju mysql_real_escape_string nema nikakvu ulogu u zastiti nase skripte, vec je potrebno
cast-ovati varijablu $id ( (int)$id ).
p.s. mysql_query() ne podrzava visetruke kverije u jednom pozivu ali npr u SQLlite i PostgreSQL funkcijama je ovo moguce izvesti.
Sledeci problem je kod LIKE operatora, ukoliko imamo neke kverije koji rade pretrazivanje baze sa ovim operatorom i plus se sve to nalazi u petlji, moze doci do DoS napada na bazu. Tj ubacivanjem % ili _ karaktera u string koji se trazi moze se iskomplikovati upit i na taj nacin "pojesti" resurse mysql servera.
Ovo nije slucaj na koji cesto nailazimo ali je dobro znati da mysql_real_escape_string ne eskejpuje % i _ karaktere, vec je potrebno uraditi ovo "rucno" (npr:
str_replace).
Ovo su samo par primera ima ih jos puno ali mislim da je dovoljno za pocetak

Samo jos par napomena:
- Nikad se ne oslanjajte na automatsko eskejpovanje (
magic quotes)
- Ukoliko je moguce koristite "prepared statement" metod:
MySQL Improved Extension, ...