Skip to content
Gérits Aurélien edited this page Feb 13, 2026 · 1 revision

La classe HTMLTool fournit des méthodes pour sécuriser l'affichage des données dans les vues HTML et JavaScript. Elle prévient les failles de type XSS (Cross-Site Scripting) en appliquant des stratégies d'échappement rigoureuses selon le contexte de rendu.

Namespace : Magepattern\Component\Tool\HTMLTool

Liste des méthodes

Méthode Paramètres Retour Description
escapeHTML() string $str string Échappe les caractères spéciaux (&, ", ', <, >).
escapeExtremeHTML() string $str string Convertit TOUS les caractères éligibles en entités HTML.
decodeEntities() string $s, bool $k string Décode les entités. $k permet de préserver les balises < > &.
decodeExtremeHTML() string $str string Décode les entités HTML extrêmes.
encodeEntities() string $s, bool $k string Encode manuellement les entités, incluant l'apostrophe XML.
escapeURL() string $str string Sécurise une URL pour une insertion dans un attribut href ou src.
escapeJS() string $str string Sécurise une chaîne pour une injection directe dans une balise <script>.

Usage de base

  1. Protection XSS standard (Affichage) Utilisez toujours cette méthode lors de l'affichage d'une variable provenant d'un utilisateur ou d'une base de données.
use Magepattern\Component\Tool\HTMLTool;

// $comment = "<script>alert('hack');</script>";
echo HTMLTool::escapeHTML($comment);
// Résultat : &lt;script&gt;alert(&#039;hack&#039;);&lt;/script&gt;
  1. Injection sécurisée dans le JavaScript L'injection de variables PHP dans du JS est une source majeure de vulnérabilités. escapeJS neutralise tout risque en utilisant l'encodage JSON.
<script>
    const userName = "<?= HTMLTool::escapeJS($user->getName()); ?>";
    console.log('Utilisateur connecté :', userName);
</script>
  1. Protection des attributs URL Pour éviter qu'une URL malicieuse ne casse l'attribut HTML ou n'injecte du code.
<a href="<?= HTMLTool::escapeURL($websiteUrl); ?>">Visiter le site</a>

Sécurité & Standards

Flags PHP 8 : La classe utilise ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML5. Cela garantit que les apostrophes sont protégées, que les caractères UTF-8 invalides ne cassent pas la chaîne, et que le rendu est conforme aux standards HTML5.

UTF-8 natif : Tous les traitements forcent l'encodage UTF-8 pour éviter les attaques basées sur les jeux de caractères alternatifs.

Complexité décodage : La méthode decodeEntities gère spécifiquement l'entité ' (souvent oubliée en HTML mais présente en XML/XHTML).

Exemple concret : Échappement Extrême Utile si vous devez envoyer des emails au format texte ou si vous travaillez sur des systèmes dont vous ne maîtrisez pas l'encodage de sortie.

$text = "L'été arrive !";
echo HTMLTool::escapeExtremeHTML($text);
// Résultat : L&apos;&eacute;t&eacute; arrive !

Clone this wiki locally