sql >> Database teknologi >  >> RDS >> Mysql

Hvor skal man bruge mysql_real_escape_string for at forhindre SQL-injektion?

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.



  1. Kan ikke binde argument ved indeks 2, fordi indekset er uden for rækkevidde

  2. Installation af WordPress ved hjælp af WP-CLI

  3. Sådan repareres forældet oracle.sql.ArrayDescriptor, oracle.sql.STRUCT og oracle.sql.StructDescriptor

  4. Indsæt DML med bindingsvariabel:BRUGER Klausul af Udfør øjeblikkelig erklæring