htmlspecialchars

jpao28
Invité n'ayant pas de compte PHPfrance

23 sept. 2010, 09:42

Bonjour,

J'aurais besoin d'un avis sur mon développement (mes pages sont en UTF-8):

Mes pages sont en UTF-8 et j'utilise strip_tags sur les $_POST puis mysql_escape_real_string avant la requête SQL
de cette façon les balises html ou autres sont supprimées et les ' sont échappés.

je pense que tous les problèmes de sécurité sont gérés ?

ma 2e question est : htmlentities et htmlsepecialchars sont inutiles pour une page en UTF-8 ? et si je n'utilise pas strip_tags ?
comment faire pour les balise html ?

ViPHP
ViPHP | 928 Messages

23 sept. 2010, 15:10

Personnellement je n'aime pas strip_tags(), car il élimine parfois des informations en trop. Utiliser htmlspecialchars() me paraît plus sûr et permet d'utiliser les caractères < et > sans restriction. Tout dépend après du type d'information que tu souhaites afficher, mais s'il s'agit d'un commentaire ou message d'un utilisateur, préfère htmlspecialchars()

jpao28
Invité n'ayant pas de compte PHPfrance

23 sept. 2010, 16:12

Ok, c'est ce que je pensais.
mais pour htmlspecialchars, comme ma page est en utf-8
faut-il préciser des paramètres (d'encodage) du style :

Code : Tout sélectionner

$var = htmlspecialchars($var,ENT_QUOTES,'UTF-8');
du plus, mes données étant entrées dans ma BDD avec mysql_escape_real_string,
vaut-il mieux utiliser htmlspecialchars en entrée ou en sortie de la BDD ?

ViPHP
AB
ViPHP | 5818 Messages

23 sept. 2010, 20:11

Tu utilises htmlspecialchars uniquement pour l'affichage, et uniquement mysql_escape_real_string pour rentrer tes données en bdd.

L'avantage d'utiliser htmlspecialschars pour l'affichage plutôt que htmlentities c'est qu'avec htmlspecialschars tu n'as pas besoin de spécifier l'encodage si tu travailles en utf-8.