Htmentities
StuXneT
-
Mihawk Messages postés 4315 Date d'inscription Statut Contributeur Dernière intervention -
Mihawk Messages postés 4315 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Eleve en classe de terminale gestion des systèmes infos, j'ai pour mission de concevoir un site web. Mon projet étant un site d'Ecommerce, je souhaite concevoir un site relativement sécurisé.
J'aimerais proteger les systemes de connexion client et admin des injections SQL via la fonction htmentities() , mais ne sais absolument pas comment l'utiliser.
Voici la manière dont j'ai codé les connexions (la plus basique possible ? :D)
Cordialement,
StuX
Eleve en classe de terminale gestion des systèmes infos, j'ai pour mission de concevoir un site web. Mon projet étant un site d'Ecommerce, je souhaite concevoir un site relativement sécurisé.
J'aimerais proteger les systemes de connexion client et admin des injections SQL via la fonction htmentities() , mais ne sais absolument pas comment l'utiliser.
Voici la manière dont j'ai codé les connexions (la plus basique possible ? :D)
$req="SELECT * FROM client WHERE mailcl='$mail' and motdepasse='$motpass'";
$mail=$_POST['mail']; $motpass=$_POST['mot_de_passe'];
Cordialement,
StuX
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.
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.
Que dire de <script></script> :)