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.