-
Notifications
You must be signed in to change notification settings - Fork 0
HTMLTool
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
| 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>. |
- 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 : <script>alert('hack');</script>- 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>- 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>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'été arrive !