Vous êtes ici Tutoriel > Fonction htmlentities

 
 

PHP - Fonction htmlentities

Tutoriel écrit par Regis Matiga
Écrit le 06 Fev 2007

Lorsque vous permettez à vos utilisateurs de soumettre du texte sur votre site web, vous devez faire attention à ne pas laisser des trous de sécurité ouverts que des utilisateurs mal intentionnés pourraient utiliser. Si jamais vous avez l’intention d’autoriser un texte soumis par un utilisateur à être visible au public vous devez penser à utiliser la fonction htmlentities pour l’empêcher d’activer du code et des scripts html qui pourraient provoquer des dommages chez vos visiteurs.

Sommaire :

PHP - Fonction htmlentities

 
PHP - Convertir HTML en Entités
La fonction htmlentities prend une chaîne de caractères et renvoie la même chaîne avec le HTML converti en entités HTML. Voir les entités HTML Caractères Spéciaux Iso HTML

.01
.02
  Par exemple, la chaîne "<script>" serait convertie en "<script>".

En convertissant le < et > en entités, la fonction htmlentities empêche le navigateur de les utiliser en tant qu’éléments HTML et elle empêche le code d’être activé si vous deviez afficher ce qu’un utilisateur a envoyé à votre site web.
Cela peut sembler un peu compliqué, mais si vous pensez à la façon dont fonctionne un navigateur, par étapes séparées, cela devient plus simple. Regardons la façon dont la fonction htmlentities change les données à trois niveaux différents: en PHP, en HTML brut et dans le navigateur. La chaîne d’exemple est un script malicieux qui va rediriger les visiteurs vers le site de l’utilisateur mal intentionné.

.01
.02
.03
.04
.05
.06
.07
.08
.09
.10
.11
.12
.13
.14
.15
.16
.17
.18
  <?php

// Un code d'un spammeur qui sert a hacké votre site
// ca veut rediriger quiconque vers exemple.com si le code dans le navigatreur est:
$utilisateur_entree = "Je vais hacké ton site, héhé !!
  <script type='text/javascript'>
  window.location = 'http://www.exemple.com/'
  </script>'"
;
 
//rendons le texte propre avant utilisation
$utilisateur_sortie_htmlentities = htmlentities($utilisateur_entree);

// Maintenant on peut afficher
echo $utilisateur_sortie_htmlentities;

?>
La sortie HTML du script ci-dessus sera comme suit:

Code HTML Brut Sans Danger:
.01
.02
.03
.04
.05
.06
  Je vais hacké ton site, héhé !!
  <script type='text/javascript'>
  window.location = 'http://www.exemple.com/'
  </script>'

Si nous n’avions pas utilisé htmlentities pour convertir tout code HTML en entités sans danger, voici ce que serait le code HTML brut et il redirigerait un visiteur vers exemple.com.

Code HTML Brut Dangereux:
.01
.02
.03
.04
.05
.06
  Je vais hacké ton site, héhé !!
  <script type='text/javascript'>
  window.location = 'http://www.exemple.com/'
  </script>'
Ces deux exemples de code HTML sont ce que vous verriez si vous regardiez le source de la page web. Cependant, si vous voyiez seulement la sortie normalement sur votre navigateur vous verriez ce qui suit.

Affichage Sans Danger:
.01
.02
  Je vais hacké ton site, héhé !! <script type='text/javascript'> window.location = 'http://www.exemple.com/' </script>'
Affichage Dangereux:
.01
.02
  ca c'est le message du spammeur qui cherche a vendre ses produits a votre insue a travers votre site web tout en hackant votre site.

PHP - Quand utiliser htmlentities ?

Chaque fois que vous permettez aux utilisateurs de soumettre du contenu sur votre site web, contenu que vos autres utilisateurs peuvent voir, vous devez penser à supprimer la possibilité de les laisser utiliser du HTML. Bien que cela va empêcher beaucoup de choses intéressantes que peuvent faire vos utilisateurs, comme de fabriquer un contenu hautement personnalisé, cela protégera votre site de beaucoup d’attaques courantes.
Rappelez-vous simplement que lorsque vous permettez à des utilisateurs de soumettre un contenu sur votre site vous leur donnez également accès à votre site web. Assurez-vous de prendre les précautions appropriées.


© Copyright: Les tutoriels sont exclusifs et sont la propriétés des auteurs.
    Reproduction interdite.