sql >> Databasteknik >  >> RDS >> Mysql

Var kan man använda mysql_real_escape_string för att förhindra SQL-injektion?

I grund och botten, varje gång du använder vissa osäkra data (användarinmatning, värde från en databas, en fil eller en extern webbplats, dvs. all data som du inte är 100 % säker på att den är säker) i en SQL-fråga, bör du undkomma den med mysql_real_escape_string . Observera att enligt OWASP , den här funktionen är inte säker för att undvika dynamiska tabellnamn (men detta är mycket mindre vanligt än "grundläggande" användarinmatning).

Jag föreslår att du tar en titt på hela OWASP-artikeln om SQL-injektion , och även för att bläddra i resten av webbplatsen. Det är en utmärkt källa till information om säkerhet i webbapplikationer.

IMO, det föredragna sättet att förhindra SQL-injektion är att använda förberedda uttalanden .

Kom ihåg att om du väljer att använda mysql_real_escape_string() det fungerar bara när det används i en sträng som är avgränsad av citattecken. Använd den aldrig på några icke-citerade värden. Detta inkluderar numeriska värden; verifiera istället att användarinmatningen faktiskt är numerisk.



  1. Hur man skriver en funktion som returnerar text eller heltalsvärden?

  2. MySQL Database startar inte i XAMPP Manager-osx

  3. Hämta kolumndefinition för resultatuppsättning för lagrad procedur

  4. SQL Server LIKE som innehåller hakparenteser