Htmentities
Fermé
StuXneT
-
10 mai 2012 à 09:37
Mihawk Messages postés 4315 Date d'inscription mercredi 29 mars 2006 Statut Contributeur Dernière intervention 6 janvier 2015 - 10 mai 2012 à 11:27
Mihawk Messages postés 4315 Date d'inscription mercredi 29 mars 2006 Statut Contributeur Dernière intervention 6 janvier 2015 - 10 mai 2012 à 11:27
3 réponses
Bonjour
htmlentities n'a rien à faire ici.
Pour te protéger des injections (et tout simplement des caractères spéciaux) dans une requête mysql, il faut utiliser la fonction mysql prévue pour ça :
html_entities sert à remplacer les caractères spéciaux par l'entité html correspondante. L'intérêt est dans les 'echo'. Imagine que quelqu'un saisisse comme nom <b>Dupont</b>. Si tu fais un simple echo, son nom apparaîtra en gras sur ton site, car <b> et </b> seront pris pour des balises.. Si tu fais echo htmlentities($nom), tu verras bien <b>Dupont</b> tel qu'il l'a tapé.
J'ai donné le <b> comme exemple, mais il est facile de comprendre qu'avec d'autres balises, il peut faire sauter complètement ta mise en page.
htmlentities n'a rien à faire ici.
Pour te protéger des injections (et tout simplement des caractères spéciaux) dans une requête mysql, il faut utiliser la fonction mysql prévue pour ça :
$req="SELECT * FROM client WHERE mailcl='". mysql_real_escape_string($mail). "' and motdepasse= '".mysql_real_escape_string($motpass)."'";
html_entities sert à remplacer les caractères spéciaux par l'entité html correspondante. L'intérêt est dans les 'echo'. Imagine que quelqu'un saisisse comme nom <b>Dupont</b>. Si tu fais un simple echo, son nom apparaîtra en gras sur ton site, car <b> et </b> seront pris pour des balises.. Si tu fais echo htmlentities($nom), tu verras bien <b>Dupont</b> tel qu'il l'a tapé.
J'ai donné le <b> comme exemple, mais il est facile de comprendre qu'avec d'autres balises, il peut faire sauter complètement ta mise en page.
Mihawk
Messages postés
4315
Date d'inscription
mercredi 29 mars 2006
Statut
Contributeur
Dernière intervention
6 janvier 2015
846
10 mai 2012 à 10:42
10 mai 2012 à 10:42
Hello,
Sache que la fonction htmlentities ne protège absolument pas des injections SQL. Cette méthode convertit les caractère HTML en un code ISO ou UTF... Comme les requêtes ne contiennent quasiment jamais de caractères HTML, cela ne sert à rien.
Cette méthode sert à éviter les problèmes d'encodage ; principalement. Elle peut aussi être utile pour éviter les failles XSS.
Pour éviter les injections SQL il faut surtout passer par des requêtes préparées.
Sache que la fonction htmlentities ne protège absolument pas des injections SQL. Cette méthode convertit les caractère HTML en un code ISO ou UTF... Comme les requêtes ne contiennent quasiment jamais de caractères HTML, cela ne sert à rien.
Cette méthode sert à éviter les problèmes d'encodage ; principalement. Elle peut aussi être utile pour éviter les failles XSS.
Pour éviter les injections SQL il faut surtout passer par des requêtes préparées.
10 mai 2012 à 10:52
Que dire de <script></script> :)
Modifié par le père le 10/05/2012 à 11:04
10 mai 2012 à 11:19
10 mai 2012 à 11:26
10 mai 2012 à 11:27