Si le htmlspecialchars (avec l'option quotes) converti les caractères spéciaux, pourquoi utiliser mysql_escape_string derrière ? Il n'y a priori plus de caractères spéciaux dans la chaine ?
Car :
htmlspecialchars('<',ENT_QUOTES);
Va te donner < par exemple mais
htmlspecialchars('\x00',ENT_QUOTES);
Va te donner \x00 , du coup tu peux rentrer n'importe quel caractère dans la requete de cette façon.
Or comme le dis la doc mysql_real_escap_string échappe les caractère dangereux pour mysql soit : NULL, \x00, \n, \r, \, ', " et \x1a.
De plus addslashes n'échappe quand à elle que Null, ' et ""
Donc mysql_real_escape_string te protège des injection sql (modification de la requete en live) et htmlspecialchars lui va te protéger contre le XSS (cross site scripting) par exemple.
Note qu'il semblerait que mysql_real_escape_string ne soit pas parfait puisque dans certains cas particulier avec un encodage bien précis de la base , il serait possible de contourner la protection via l'injection de chr(). Mais ca commence déjà à être hardcore ^_^
La vrai solution de sécurisation reste tout de même les requetes préparées
Le truc du nom de formulaire, j'y avais jamais pense, c'est sympa
C'est notemment très important avec les appel Ajax , pour ne pas être victime de CSRF (cross site request forgery).
Je note une pointe d'agacement dans le ton du topic, l'idée n'est pas d'apprendre de chacun ?
Méa culpa si mon post précédent donnais cet impression
Partager