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
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)

$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 :
$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.
1
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:52
Pas que la mise en page.
Que dire de <script></script> :)
0
Etait-il nécessaire d'insister ? Tu n'as pas peur de donner des idées à certains ?
0
Mihawk Messages postés 4315 Date d'inscription mercredi 29 mars 2006 Statut Contributeur Dernière intervention 6 janvier 2015 846
10 mai 2012 à 11:19
"Certains" n'ont pas besoin de moi pour avoir des idées.
0
Certains, non. Certains, si. Mais je veux bien reconnaître que ceux qui n'ont pas eu l'idée tout seuls ne doivent pas être les plus dangereux ^^.
0
Mihawk Messages postés 4315 Date d'inscription mercredi 29 mars 2006 Statut Contributeur Dernière intervention 6 janvier 2015 846
10 mai 2012 à 11:27
Oui, et puis tant qu'on n'a pas vécu un petit hack XSS on ne garde pas en mémoire cette faille de sécurité ;)
0
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
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.
0
Merci pour tout (surtout pour m'avoir éclairci sur cette fonction).
J'modifie tout ça de suite, bonne journée !
0