sql >> Databasteknik >  >> RDS >> Mysql

Skyddar mysql_real_escape_string() HELT mot SQL-injektion?

Enligt Stefan Esser, "mysql_real_escape_string() [är] inte säker när SET NAMES används."

Hans förklaring, från hans blogg :

SET NAMES används vanligtvis för att byta kodning från vad som är standard till vad applikationen behöver. Detta görs på ett sätt som mysql_real_escape_string vet inte om detta. Det betyder att om du byter till någon multibyte-kodning som tillåter snedstreck som 2nd 3rd 4th... byte får du problem, eftersom mysql_real_escape_string kommer inte ut korrekt. UTF-8 är säkert...

Säkert sätt att ändra kodning är mysql_set_charset , men det är bara tillgängligt i nya PHP-versioner

Han nämner dock att UTF-8 är säkert.



  1. Hur man partitionerar postgres-tabellen med en mellantabell

  2. Få storleken på alla databaser i PostgreSQL (psql)

  3. Skapa en tabell i MySQL

  4. Hur man skickar tabellvärdesparametrar till lagrad procedur från .net-kod