Dybest set, hver gang du bruger nogle usikre data (brugerinput, værdi fra en database, en fil eller et eksternt websted, dvs. alle data, som du ikke er 100 % sikker på, at den er sikker) i en SQL-forespørgsel, bør du undslippe den ved hjælp af mysql_real_escape_string . Bemærk, at ifølge OWASP , denne funktion er ikke sikker til at undslippe dynamiske tabelnavne (men dette er langt mindre almindeligt end "grundlæggende" brugerinputindsættelse).
Jeg foreslår, at du tager et kig på hele OWASP-artiklen om SQL-injektion , og også for at gennemse resten af hjemmesiden. Det er en fantastisk kilde til information om sikkerhed i webapplikationer.
IMO, den foretrukne måde at forhindre SQL-injektion på er at bruge udarbejdede erklæringer .
Husk, at hvis du vælger at bruge mysql_real_escape_string()
det virker kun, når det bruges inde i en streng, der er afgrænset af anførselstegn. Brug det aldrig på nogen uciterede værdier. Dette inkluderer numeriske værdier; valider i stedet, at brugerinputtet faktisk er numerisk.