htmlentities(), htmlspecialchars() ..

mic54800
WRInaute discret
WRInaute discret
 
Messages: 61
Inscription: 20 Juil 2008

htmlentities(), htmlspecialchars() ..

Message le Dim Aoû 24, 2008 17:58

Bonjour,
Je cré un espace membre pour un site et comme d'jabitude, je suis confronté au même problème.
Les données du profil de chaque membre sont enregistrées en bdd.
Quand je veux afficher leur profil visible par tout le monde, je fais un htmlentities()
Seulement, il me converti les accents.
Je suis sur une page utf-8 et je n'ai pas tellement l'intension de changer.
Comment faire pour bien protéger mes pages en affichant correctement les accents ?
Serait-il mieu de faire un strip_tags() en enregistrant les données et ne pas faire de htmlentities à la sorti ?

Merci pour vos réponses !!


YoyoS
WRInaute accro
WRInaute accro
 
Messages: 3835
Inscription: 14 Sep 2006

Message le Dim Aoû 24, 2008 19:23

Oulala, la galère, pourquoi tu paniques autant en voulant afficher les données provenant de ta base de données ?

C'était plutôt lors de l'insertion dans ta base de données qu'il fallait t'en préoccuper, et le htmlentities est strictement inutile en utf-8.

mic54800
WRInaute discret
WRInaute discret
 
Messages: 61
Inscription: 20 Juil 2008

Message le Dim Aoû 24, 2008 19:25

Bah dans un sens où dans l'autre, moi ce que he veux c'est simplement éviter le hack du site à cause d'une boulette ...
Comment ça il est inutil en utf-8 ?
Et comment est-ce que je dois procéder pour que la bdd soit la mieu protégée et éviter les problèmes d'accents ?


YoyoS
WRInaute accro
WRInaute accro
 
Messages: 3835
Inscription: 14 Sep 2006

Message le Dim Aoû 24, 2008 19:32

Personne ne s'est jamais fait hacké parcequ'il avait affiché un accent sans l'avoir passé dans un htmlentities que je sache. htmlentities ne sert que pour l'ISO, l'utf en a pas besoin puisqu'il peut utiliser tous les caractères existants...

Il suffit de vérifier lors de l'insertion tes données, c'est tout, après tu affiches sans même faire attention.

Tu vérifies tout ce que peut rentrer l'utilisateur (GET et POST) à coup de htmlspecialchars en spécifiant le 2ème paramètre, selon ce que tu veux aussi convertir (' et ") par exemple ENT_QUOTES.

Tu fais un mysql_real_escape_string lors de l'insertion en bdd.

Après quand tu vas rechercher tes infos, tu les affiches bêtement ;)


Bool
WRInaute passionné
WRInaute passionné
 
Messages: 1290
Inscription: 26 Fév 2004

Message le Dim Aoû 24, 2008 22:10

Question de point de vue, mais pour ma part je ne fais jamais d'htmlentities ou htmlspecialchars lors de l'insertion en base de données : pourquoi encoder du texte en HTML dans une base de données ? Cela réduit très fortement les possibilités de recherche, de comparaison et de réutilisation.

Par contre il est préférable de vérifier les données lors de la saisie oui. On insère en base que ce que l'on compte utiliser quoi.

Et à l'affichage il n'y a plus qu'à faire l'htmlspecialchars / htmlentities, sur ce qui est nécessaire. Ca ne consomme vraiment pas grand chose, et je préfère pour ma part économiser d'autres ressources que ça.


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité