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

Brug af parametre til mysql_query

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_* !



  1. CSV i SQL-udvikler...

  2. Sådan erstattes NULL med en anden værdi i SQL Server – ISNULL()

  3. En primær skal inkludere alle kolonner i tabellens partitioneringsplaceringsfejl?

  4. Beverly Hills 90210 og ZIP+4:Håndtering af adresser i datamodeller