Audit de sécurité complet d'un site WordPress — réalisé uniquement depuis l'interface d'administration. Zéro accès serveur. Résultats mesurables.
Un site WordPress pour une école de danse (Strasbourg). Hébergement mutualisé, sans FTP, sans SSH, sans accès cPanel.
La seule porte d'entrée disponible : l'interface wp-admin.
C'est précisément la situation dans laquelle se trouvent la majorité des petits sites WordPress.
Notre objectif était de prouver qu'un audit et une mise en sécurité sérieux restent possibles dans ce cadre.
Scores établis par audit manuel : vérification des en-têtes HTTP, tests curl xmlrpc.php, navigation chronométrée (Navigation Timing API), analyse SEO (Yoast, sitemap, alt tags, canonicals), accessibilité et compatibilité mobile.
Le plugin "Disable XML-RPC" (Phil Erb, 60 000+ installations actives) utilise le hook WordPress
add_filter('xmlrpc_enabled', '__return_false'). Ce filtre bloque uniquement les méthodes authentifiées.
Les appels système comme system.listMethods ou les tentatives de brute force XML-RPC passent toujours — en 200 OK.
Remplacement par Disable XML-RPC-API qui intercepte la requête avant WordPress
et retourne un 403 Forbidden pour toute méthode (GET, POST, HEAD).
Résultat : curl -X POST .../xmlrpc.php → 403 — endpoint neutralisé.
| Critère | Avant | Après |
|---|---|---|
| Mises à jour plugins | 10 en retard dont 1 critique | ✓ Tous à jour |
| Mises à jour thèmes | 9 en retard | ✓ Tous à jour |
| XML-RPC | Exposé — 200 OK sur POST | ✓ 403 Forbidden (GET + POST) |
| REST API — énumération users | Exposée | ✓ Bloquée (Wordfence) |
| Wordfence WAF | Installé, non configuré | ✓ Actif + configuré |
| Brute force protection | Absente | ✓ Active (Wordfence) |
| X-Pingback header | Exposé | ✓ Absent |
| User-Agent vide | Non filtré | ✓ Bloqué |
| Masquage URL wp-login.php | Non masquée | ⚠ Impossible (mod_rewrite off) |
| En-têtes HTTP sécurité | 0/7 | ⚠ 0/7 — Phase 2 |
| Sitemap.xml | Absent | ⚠ À activer — Phase 2 |
| Alt tags images | 0/5 renseignés | ⚠ À corriger — Phase 2 |
| URL canonique | HTTP au lieu de HTTPS | ⚠ À corriger — Phase 2 |
Sur un hébergement mutualisé sans accès serveur, certaines protections (en-têtes HTTP, mod_rewrite, configuration Apache) ne sont pas accessibles depuis wp-admin. Nous l'évaluons systématiquement avant l'intervention et documentons chaque limitation rencontrée avec une recommandation alternative.
Audit complet · Rapport livré · Résultats mesurables · Adaptés à votre hébergement
→ Demander un audit WordPress