Le Cross-Site Scripting, abrégé XSS, est une vulnérabilité web qui permet à un attaquant d’injecter des scripts malveillants dans des pages consultées par d’autres utilisateurs. Contrairement à l’injection SQL qui cible la base de données, le XSS cible directement les navigateurs des visiteurs.
Les trois types de XSS
On distingue trois formes principales :
- XSS réfléchi : le script malveillant est inclus dans l’URL et renvoyé tel quel par le serveur. L’attaquant doit inciter la victime à cliquer sur un lien piégé.
- XSS stocké : le script est enregistré dans la base de données (commentaire, formulaire de contact) et exécuté à chaque consultation. C’est la forme la plus dangereuse pour WordPress.
- XSS basé sur le DOM : la manipulation se fait côté client, via le JavaScript existant sur la page, sans passer par le serveur.
Impact du XSS sur un site WordPress
Un XSS stocké sur un site WordPress peut avoir des conséquences graves :
- Vol de cookies de session et prise de contrôle de comptes administrateurs
- Redirection silencieuse des visiteurs vers des sites malveillants
- Affichage de faux formulaires de connexion pour voler des identifiants (phishing)
- Installation de backdoors si un administrateur connecté consulte la page infectée
- Collecte de données personnelles des visiteurs (keylogging, formulaires)
Prévention du XSS dans WordPress
WordPress intègre des fonctions d’échappement natives (esc_html(), esc_attr(), wp_kses()) que tout développeur doit utiliser lors de l’affichage de données. Pour protéger votre site :
- Maintenir tous les plugins à jour — les XSS sont fréquemment corrigés dans les mises à jour
- Configurer une Content Security Policy (CSP) pour limiter les sources de scripts autorisées
- Activer un WAF qui détecte et bloque les tentatives d’injection de scripts
- Désactiver les commentaires si non utilisés, ou activer une modération stricte