For det første kaldes det, det handler om, SQL-injektion . Det er dybest set blot muligheden for at ændre forespørgsler mod databasen via brugerinput.
Lad os se på et eksempel:
Forespørgsel:
SELECT temp1 FROM temp WHERE temp2 = 'VAR1';
Nu vil vi tildele VAR1 værdien af:'; DROP TABLE *; --
Og vi får:
SELECT temp1 FROM temp WHERE temp2 = ''; DROP TABLE *; --';
Med mysql_real_escape_string
det ville se sådan ud:
SELECT temp1 FROM temp WHERE temp2 = '\'; DROP TABLE *; --'
mysql_real_escape_string
'sikrer' en streng til brug i en forespørgsel.
Men i sidste ende bør du stoppe med at bruge mysql_*
i det hele taget . De er forældede og betragtes som usikre, når det kommer til at forhindre SQL-injektion eller andre måder at temperere forespørgslerne på.
Du bør simpelthen stoppe med at sammenkæde forespørgsler som denne og begynd at bruge forberedte udsagn , som ikke kun er nemmere at bruge, forhindrer SQL-injektion som standard, men kan også forbedre hastigheden på din applikation.
Til PHP er der to udvidelser, som er designet til at lukke hele mysql_*
åbnet:
Og jeg siger det igen:Hold op med at bruge mysql_*
!