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

mysql_real_escape_string() protegge COMPLETAMENTE dall'iniezione SQL?

Secondo Stefan Esser, "mysql_real_escape_string() [è] non sicuro quando SET NAMES viene utilizzato."

La sua spiegazione, dal suo blog :

SET NAMES viene solitamente utilizzato per cambiare la codifica da ciò che è predefinito a ciò di cui l'applicazione ha bisogno. Questo viene fatto in un modo che mysql_real_escape_string non lo sa. Ciò significa che se si passa a una codifica multi-byte che consente la barra rovesciata come 2° 3° 4°... byte si incontrano problemi, perché mysql_real_escape_string non esce correttamente. UTF-8 è sicuro...

Un modo sicuro per cambiare la codifica è mysql_set_charset , ma è disponibile solo nelle nuove versioni di PHP

Tuttavia, afferma che UTF-8 è sicuro.