JeuWeb - Crée ton jeu par navigateur
SecureM: Sécurisez vos sites ! - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : SecureM: Sécurisez vos sites ! (/showthread.php?tid=3474)

Pages : 1 2


RE: SecureM: Sécurisez vos sites ! - Mickaël - 23-12-2008

Je ne suis pas totalement d'accord : il existe un 3e argument à htmlentities pour définir l'encodage (cf http://fr2.php.net/manual/fr/function.htmlentities.php).

Par contre je présente mes excuses, je ne me rappelais plus que strip_tags bloquait carrément les "<" suivis d'une lettre. Parce que si ce n'était pas le cas, ça serait sacrément dangereux Tongue
La fonction htmlentities n'est donc pas forcément indispensable ou complémentaire à strip_tags. Ne pas oublier aussi la fonction htmlspecialchars qui fait la même chose que htmlentities sans les "entités HTML" (et donc sans problème d'encodage).


RE: SecureM: Sécurisez vos sites ! - Sephi-Chan - 24-12-2008

Je soulignais les arguments additionnels de htmlentities() dans mon exemple. Smile

Le quatrième argument est également adapté aux personnes qui appliquent cette fonction avant l'insertion en base de données. En effet, en donnant true en quatrième argument, les caractères déjà encodés ne le seront pas à nouveau, un &gt; ne deviendra pas &amp;gt;. C'est important quand l'on souhaite permettre l'édition d'un message qui a été encodé.

Enfin, htmlspecialchar() est touché par le même problème d'encodage : il renvoie par défaut une chaîne encodée en ISO-8859-15 (mais permet lui aussi de spécifier l'encodage comme troisième argument). C'est transparent dans la plupart des cas mais attention.

Toujours est-il que si l'on travaille avec UTF-8, encoder les caractères n'a pas vraiment d'intérêt, htmlentities() suffit à encoder les caractères &, ', ", < et > (notamment quand on travaille sur des documents XML (récemment, un membre du forum avait un petit soucis avec une feuille XSL et un caractère > : même dans une expression il faut utilise &gt; !)).

Pour moi, la meilleure solution est donc de travailler avec UTF-8 et strip_tags(), que l'on utilisera à l'affichage ou à l'insertion selon les préférences.


Sephi-Chan


RE: SecureM: Sécurisez vos sites ! - Mickaël - 24-12-2008

J'ai du mal à comprendre, tu dis que htmlspecialchars sort une chaîne en ISO-8859-15 par défaut, mais puisqu'il ne modifie que & " ' < et >, ne devrait-il pas être transparent dans tous les cas ?
Et merci des autres infos Big Grin


RE: SecureM: Sécurisez vos sites ! - Sephi-Chan - 24-12-2008

Ce n'est pas parce que c'est transparent que la chaîne n'est pas altérée.

Je ne suis pas assez callé pour savoir quels problèmes une chaîne encodée en ISO-8859-15 peut causer sur un document encodé en UTF-8. D'où l'appel à la prudence. Les pires bugs sont ceux qu'on n'attend pas. Smile


Sephi-Chan


RE: SecureM: Sécurisez vos sites ! - Nodark - 24-12-2008

Merci ca m'a rappelé à l'ordre de remettre des barrières Wink


RE: SecureM: Sécurisez vos sites ! - tog84 - 24-12-2008

Merci à vous pour vos réponses, cela m'a bien aidé et je suis sûrement pas le seul. :d
Merci