L’« échappement » désigne, dans les langages de balisage, de programmation ou de script, le processus qui consiste à convertir des caractères ou des symboles ayant une signification particulière en chaînes de substitution pouvant être traitées en toute sécurité.

Par exemple, en HTML, les caractères < et > sont réservés à la délimitation des balises. S’ils apparaissent directement dans le code HTML, le navigateur web les interprète comme du balisage plutôt que comme du texte brut. Pour afficher ces symboles sous forme de texte brut, il faut donc les écrire sous forme de séquences d’échappement, telles que &lt; pour < et &gt; pour >. Lorsqu’un navigateur rencontre ces séquences d’échappement, il les affiche visuellement sous la forme des caractères d’origine (< et >). Ce processus de conversion est ce que l’on appelle « l’échappement ».

L’échappement est particulièrement important dans le contexte de la sécurité web. Il constitue un aspect essentiel de l’« assainissement », une pratique visant à traiter de manière sécurisée les données saisies par les utilisateurs dans les formulaires web.

Par exemple, imaginez une application web qui récupère les données saisies par un utilisateur dans un formulaire et les affiche directement sur une page suivante. Supposons qu’un utilisateur saisisse le contenu suivant :


<script>alert("Hello!");</script>


Si l’application web inclut directement cette chaîne dans la page générée sans l’échapper, le navigateur l’interprète et l’exécute comme du code JavaScript. Par conséquent, une fenêtre d’alerte affichant « Hello! » apparaîtrait, ce qui n’était pas prévu par le créateur ou l’administrateur du site web. Bien que ce script simple ne soit pas susceptible de causer des dommages importants, la possibilité pour un utilisateur tiers d’intégrer arbitrairement des scripts dans des pages web constitue un problème sérieux, susceptible d’exposer le site à des attaques de type Cross-Site Scripting (XSS) et à d’autres menaces de sécurité.

Pour éviter cela, l’application web doit correctement échapper les caractères spéciaux avant d’afficher ces données. En remplaçant < et > par leurs séquences d’échappement correspondantes (&lt; et &gt;), le script malveillant s’afficherait sans danger sous la forme de la chaîne suivante :


&lt;script&gt;alert("Bonjour !");&lt;/script&gt;


Sous cette forme, le navigateur le traite strictement comme du texte, neutralisant ainsi tout script et l’affichant comme prévu, sans déclencher de comportement indésirable.

La plupart des langages et frameworks modernes de développement d’applications web intègrent des fonctions permettant d’échapper correctement les chaînes de caractères. Toutefois, vérifier que chaque entrée est correctement échappée dans des applications web complexes, ainsi qu’identifier et corriger les éléments problématiques, peut demander beaucoup de temps et d’efforts. Une solution particulièrement efficace consiste à utiliser un pare-feu applicatif web (WAF), qui garantit que les entrées soumises par les utilisateurs sont échappées avant d’atteindre l’application web.

F5 propose une fonctionnalité WAF avec sa solution « F5 BIG-IP ».