Même une donnée nettoyée à l’entrée peut redevenir dangereuse si le contexte d’affichage change : une chaîne parfaitement anodine dans une base de données peut casser une page HTML si elle contient un caractère < non maîtrisé. Échapper consiste à neutraliser ces caractères sensibles juste avant de les injecter dans la sortie, en tenant compte du contexte précis où ils apparaissent.
Fonctions dans WordPress
esc_html(): pour du texte affiché entre deux balises HTML.esc_attr(): pour une valeur placée dans un attribut HTML.esc_url(): pour une URL, notamment dans un attributhrefousrc.esc_js(): pour une chaîne insérée dans du JavaScript en ligne.
Exemple
<a href="<?php echo esc_url($lien); ?>">
<?php echo esc_html($titre); ?>
</a>
Bon à savoir
La règle d'or des développeurs de thèmes WordPress est « échapper tard, échapper souvent » : appliquer la bonne fonction d'échappement au moment précis de l'affichage plutôt qu'en amont, car le même contenu peut se retrouver affiché dans plusieurs contextes différents (une page, un flux RSS, un attribut) qui exigent chacun leur propre traitement. Utiliser esc_attr() là où il faudrait esc_html(), ou l'inverse, laisse subsister une faille malgré l'apparence de prudence, car chaque fonction neutralise un jeu de caractères différent selon la grammaire du contexte visé.
Pièges fréquents
Échapper une donnée qui a déjà été échappée une première fois plus haut dans la chaîne d'exécution peut afficher des entités HTML doublées à l'écran, comme & au lieu d'une simple esperluette. Mieux vaut garder la donnée brute le plus longtemps possible et n'appliquer l'échappement qu'au tout dernier moment, juste avant l'instruction echo qui l'affiche réellement.