# Widget HTML brut d’Elementor : usages et risques de sécurité

> Coller un script tiers dans le widget HTML d'Elementor est tentant et rapide. Ce que l'échappement natif ne couvre pas, et comment limiter les risques réels.

- Auteur : Clément Hadrot
- Publié le : 2020-09-02
- Mis à jour le : 2020-09-02
- Catégorie : Elementor
- URL : https://wpmoderne.dev.wordpress-developpement.fr/elementor/widget-html-brut-elementor-securite/

## L’essentiel

- Le widget HTML n'échappe rien : tout ce qui est collé s'exécute tel quel côté navigateur
- Un compte contributeur ayant accès à ce widget peut injecter du JavaScript arbitraire
- Restreindre son usage aux rôles administrateur limite la surface d'attaque

Un intégrateur pressé, en fin de journée, a besoin d'ajouter un widget de chat tiers trouvé sur un forum. Le réflexe le plus rapide consiste à ouvrir le widget HTML d'Elementor, coller le script fourni, et publier. Ça fonctionne visuellement. Ce qui ne se voit pas immédiatement, c'est que ce widget ne filtre ni n'échappe absolument rien de ce qui est saisi : contrairement à un champ de texte classique de WordPress, il n'existe aucune couche de nettoyage entre ce qui est tapé et ce qui s'affiche dans la page.

Ce comportement est volontaire — le widget HTML est justement conçu pour permettre d'injecter du code que WordPress nettoierait autrement. Mais cette liberté a un coût en matière de sécurité qui mérite d'être compris avant de l'ouvrir à n'importe quel rôle utilisateur sur un site multi-auteurs.

## Ce que le widget HTML exécute sans broncher

Le contenu du widget HTML est stocké tel quel dans les données Elementor et restitué directement dans le DOM au rendu de la page, sans passer par les fonctions d'échappement WordPress comme `esc_html()` ou `wp_kses()`. Concrètement, une balise `<script>` collée dans ce widget s'exécute dans le navigateur du visiteur exactement comme si elle avait été écrite en dur dans le thème. Aucune alerte, aucun avertissement ne prévient l'utilisateur au moment de l'enregistrement.

## Le scénario de risque concret

Sur un site à plusieurs auteurs, si le rôle Contributeur ou Auteur a accès à l'éditeur Elementor et au widget HTML, n'importe quel compte compromis ou malveillant peut injecter un script de vol de cookies de session, un mineur de cryptomonnaie caché, ou une redirection publicitaire, sans que cela transite par un formulaire filtré. C'est une différence fondamentale avec l'éditeur de blocs natif de WordPress, où le bloc HTML personnalisé est lui aussi permissif, mais où les rôles ayant accès à l'édition de contenu sont généralement mieux maîtrisés côté capacités WordPress.

> L'essentiel à retenir : Le widget HTML n'échappe rien : tout ce qui est collé s'exécute tel quel côté navigateur ; Un compte contributeur ayant accès à ce widget peut injecter du JavaScript arbitraire ; Restreindre son usage aux rôles administrateur limite la surface d'attaque

## Limiter l'exposition sans renoncer au widget

Plusieurs mesures concrètes réduisent le risque sans interdire totalement l'usage du widget, qui reste légitime pour intégrer des scripts de confiance :

- Restreindre l'accès à l'éditeur Elementor aux rôles Administrateur et Éditeur de confiance uniquement, via les réglages de rôles d'Elementor Pro ou un plugin de gestion de capacités
- Auditer régulièrement le contenu des widgets HTML existants sur le site, en particulier après une prise en main de projet hérité
- Privilégier un gestionnaire de scripts dédié (Google Tag Manager en mode conteneur validé) plutôt que de coller directement des scripts tiers trouvés en ligne
- Vérifier la provenance de tout script collé : un extrait trouvé sur un forum non officiel n'a aucune garantie de ne pas contenir de code masqué

### Le cas des scripts obfusqués

Certains scripts de tracking ou de widgets tiers arrivent volontairement minifiés et obfusqués, rendant leur lecture quasiment impossible pour un intégrateur non spécialiste. Dans ce cas, la seule protection réelle consiste à ne récupérer le script que depuis la documentation officielle du fournisseur, jamais depuis un copier-coller relayé sur un forum ou un tutoriel tiers dont la fraîcheur n'est pas garantie.

## Différence avec le Custom Code d'Elementor Pro

Il est utile de na pas confondre le widget HTML, disponible dans la version gratuite et pensé pour un usage ponctuel dans une page, avec la fonctionnalité Custom Code d'Elementor Pro, qui permet d'injecter des scripts de manière centralisée avec des conditions d'affichage précises (toutes les pages, une page spécifique, un type de contenu). Cette dernière offre une meilleure traçabilité côté administration puisque tous les scripts injectés apparaissent listés à un seul endroit, mais elle ne filtre pas davantage le contenu : la vigilance sur l'origine du code reste la même.

> Un widget HTML sans échappement n'est pas un défaut d'Elementor à corriger, c'est un outil puissant à réserver aux personnes qui comprennent ce qu'elles y collent.

## Pour aller plus loin

Avant d'ouvrir l'accès au widget HTML à un rôle non administrateur, il vaut mieux se poser la question du besoin réel : un contributeur a-t-il vraiment besoin d'injecter du code, ou cherche-t-il simplement à insérer une iframe vidéo que le widget natif Elementor gère déjà nativement sans passer par du HTML brut ? Dans la majorité des cas observés en agence, un widget dédié suffit et évite d'ouvrir cette porte.
