Sommaire

Échappement automatique du HTML

Par échappement on entend remplacement de certains caractères spéciaux propres aux balises HTML par une valeur qui sera affichée comme du texte et non comme une balise. Par exemple le remplacement de ’<’ par ’&lt;’. En effet lorsque l’on génère du HTML depuis un template à partir de variables, il y a toujours un risque que ces variables contiennent des caractères qui peuvent compromettre l’affichage du HTML. Le développeur ne maîtrise que le contenu des variables qu’il a générées lui même, or un site web moderne contient également des informations saisies par les utilisateurs (blogs, informations, réactions aux forums...) et sur lesquelles il n’a pas le contrôle.

Prenons un exemple :

Utilisateur {{user.nom}} connecté depuis le ....

Cela peut sembler anodin, car cette instruction va simplement afficher le nom de l’utilisateur, mais supposons que user.nom provienne d’un formulaire et que l’utilisateur en question ait rentré la valeur suivante pour son nom :

<script>mon_code_malveilant(){... </script>

Avec un tel nom, le template affichera le résultat suivant :

Utilisateur <script>function mon_code_malveilant(){... </script>  
connecté depuis le ....

Ce qui pourrait provoquer des résultats inattendus ...

Il en est de même si le nom rentré est par exemple :

<div style="background-color:red;">Bob ...