Skip to content
🔒 Sécurité WordPress en 2026 : un guide complet pour la protection de site web

🔒 Sécurité WordPress en 2026 : un guide complet pour la protection de site web

Un site WordPress ne se fait pas pirater parce que le moteur est «truffé de failles». Il se fait pirater parce que le propriétaire a repoussé une mise à jour de plugin, défini le mot de passe admin123 et laissé xmlrpc.php ouvert. Des robots automatisés scannent Internet en permanence.

Ils ne cherchent pas à savoir si vous vendez des bougies artisanales ou si vous gérez une boutique en ligne. Ils vont trouver et exploiter la vulnérabilité. Force brute sur la page de connexion, injection SQL, téléversement de shell via un plugin vulnérable, tout cela tourne 24 heures sur 24.

La bonne nouvelle: vous pouvez mettre en place une protection de base en une soirée, sans connaissances techniques approfondies. Voici un ensemble de mesures éprouvées, de l’installation d’un pare-feu au durcissement manuel du serveur. Nous appliquons tout ce qui est décrit ici sur nos propres projets.

💡 Aperçu rapide:

  • Installez un pare-feu: BBQ ou Wordfence, la première ligne de défense bloque la plupart des attaques avant même qu’elles n’atteignent WordPress.
  • Fermez les points d’entrée classiques: xmlrpc.php, l’API REST pour les utilisateurs non authentifiés, l’affichage du contenu des répertoires, l’éditeur de fichiers dans le panneau d’administration.
  • Configurez les mises à jour automatiques pour le cœur, les thèmes et les plugins. Une version obsolète de plugin est le principal vecteur d’attaque.
  • Faites une sauvegarde stockée HORS du serveur. Sans sauvegarde, la récupération après un piratage signifie réinstaller WordPress de zéro.
  • Activez l’authentification à deux facteurs pour tous les administrateurs. Un mot de passe peut être deviné; un second facteur, non.

Là où ils frappent en premier: les vecteurs d’attaque typiques

La plupart des gens imaginent un pirate comme quelqu’un devant un terminal, en train de deviner manuellement le mot de passe administrateur. La réalité est plus banale: la quasi-totalité des attaques sont menées par des robots qui suivent un script. Ils recherchent des vulnérabilités connues dans les plugins et les thèmes, frappent à la porte de xmlrpc.php, scannent /wp-content/uploads/ à la recherche de fichiers PHP exécutables.

Les principaux vecteurs d’attaque contre WordPress:

  • Plugins et thèmes obsolètes. Selon les rapports Sucuri, environ 40% des sites piratés utilisaient une version obsolète du CMS, d’un plugin ou d’un thème au moment de l’infection. Les développeurs corrigent les failles avec des correctifs, mais seulement si vous appliquez ces correctifs.

  • Mots de passe faibles. Les attaques par force brute essaient des dizaines de milliers de combinaisons par minute. Un mot de passe de 6 caractères sans caractères spéciaux est cassé instantanément.

  • Hébergement non sécurisé. L’hébergement mutualisé bon marché lésine sur l’isolation des comptes: si un site voisin sur le serveur est piraté, l’attaque peut déborder sur le vôtre.

  • Permissions d’écriture excessives. Lorsque le serveur web peut écrire dans n’importe quel fichier, un shell téléversé via une faille prend le contrôle total du site.

Comprendre ces vecteurs, c’est la moitié de la défense. L’autre moitié, ce sont des actions concrètes.

Niveau 1: protection rapide à mettre en place en une demi-heure

C’est par là que vous devriez commencer aujourd’hui. Chaque action prend quelques minutes, ne nécessite aucune modification de code et ne cassera pas votre site.

Installer un pare-feu: BBQ Firewall

BBQ Firewall est un plugin de Jeff Starr qui fonctionne sur le principe «installez et oubliez». Pas de réglages, pas d’interférence avec .htaccess ou la base de données. Il bloque simplement les requêtes URL malveillantes avant qu’elles n’atteignent WordPress: eval(), base64_decode, chaînes excessivement longues, tentatives d’injection.

Le plugin pèse moins de 10 Ko et ne génère aucune charge. En même temps, il intercepte les injections SQL, les XSS, les téléversements de fichiers exécutables et les attaques via des référents «malveillants».

En pratique, BBQ est souvent installé EN COMPLÉMENT de Wordfence ou de Solid Security; ils résolvent des problèmes différents et n’entrent pas en conflit. Un pare-feu au niveau des requêtes plus un plugin de sécurité complet vous offre une défense en couches.

Activer l’authentification à deux facteurs

Un mot de passe peut être deviné, intercepté ou acheté dans une compilation de bases de données compromises. Un second facteur, un code à usage unique provenant d’une application d’authentification, réduit à néant toute la logique des attaques par force brute.

WordPress n’a pas de 2FA intégrée. Le chemin le plus simple est d’installer Solid Security (anciennement iThemes Security) ou Wordfence. Les deux incluent la 2FA dans la version gratuite. Après activation, allez dans Sécurité → Réglages → Authentification à deux facteurs et activez-la pour le rôle Administrateur.

Ces mêmes plugins corrigent une douzaine d’autres vulnérabilités dès leur activation:

  • Solid Security: modifie l’URL de connexion (/wp-admin → votre slug unique), fixe une limite de tentatives de connexion, analyse les fichiers à la recherche de modifications, bloque les IP après une série de connexions échouées, vérifie les plugins et thèmes pour les vulnérabilités connues.

  • Wordfence: pare-feu applicatif web avec des règles mises à jour automatiquement, scanner de malwares, protection contre la force brute, surveillance du trafic en temps réel. Il est particulièrement efficace pour nettoyer un site déjà piraté: il trouve les portes dérobées, les fichiers cœur modifiés, le spam caché.

Vous n’avez besoin que de L’UN d’entre eux. Sur nos projets, nous installons Wordfence + BBQ: le premier fournit un WAF et un scanner, le second coupe les requêtes indésirables avant même qu’elles ne s’approchent.

Désactiver xmlrpc.php

XML-RPC est une interface pour le travail à distance avec WordPress via des applications mobiles et les trackbacks. Aujourd’hui, la grande majorité des sites n’en ont pas besoin, et pourtant cela reste l’un des points les plus attaqués: les robots utilisent xmlrpc.php pour forcer les mots de passe par force brute et mener des attaques DDoS.

Vous pouvez le désactiver de deux manières. La manière rapide, via un plugin: Solid Security le fait en un clic. La manière appropriée, au niveau du serveur, dans .htaccess:

1<Files xmlrpc.php>
2Order Deny,Allow
3Deny from all
4</Files>

Ajoutez ce bloc au .htaccess racine et oubliez xmlrpc. Si vous utilisez l’application mobile WordPress ou des services externes qui ont besoin de XML-RPC, vérifiez d’abord s’ils fonctionnent sans. En 2026, les alternatives, l’API REST avec authentification, couvrent presque tous les scénarios.

Désactiver l’affichage du contenu des répertoires

Ouvrez вашсайт.com/wp-content/uploads/ dans votre navigateur. Si vous voyez une liste de fichiers, vous avez un problème. L’affichage du contenu des répertoires montre la structure de votre site à quiconque prend la peine de regarder.

La solution: une ligne dans .htaccess:

1Options -Indexes

Ajoutez également un index.php vide dans chaque répertoire suspect: /wp-content/uploads/, les thèmes, les extensions qui n'ont pas leur propre index.php.

Désactiver l'éditeur de fichiers dans l'interface d'administration

WordPress intègre la possibilité de modifier les fichiers .php des thèmes et des extensions directement depuis l'interface d'administration: Apparence → Éditeur de fichiers du thème et Extensions → Éditeur de fichiers des extensions. Pratique, jusqu'à ce qu'une personne non autorisée accède à l'administration. À ce moment-là, cela devient un outil prêt à l'emploi pour injecter un shell.

Ajoutez une constante dans wp-config.php:

1define('DISALLOW_FILE_EDIT', true);

C'est tout. L'éditeur disparaît de l'interface d'administration. Utilisez FTP/SFTP pour modifier les fichiers, c'est moins pratique, mais plus sûr.

Niveau 2: durcissement manuel de WordPress

Les mesures suivantes vont un peu plus loin: elles nécessitent de modifier des fichiers de configuration et de comprendre la structure du serveur. Le résultat est un site que les robots contournent parce qu’ils n’y voient pas WordPress.

Mettre à jour les clés de sécurité

Les sels, clés de sécurité et sels, huit lignes dans wp-config.php qui chiffrent les cookies d’authentification. Les modifier déconnecte instantanément tout le monde, y compris un attaquant potentiel disposant d’une session volée.

Rendez-vous sur api.wordpress.org/secret-key/1.1/salt/, copiez le bloc généré et remplacez la section correspondante dans wp-config.php par celui-ci. Cela prend une minute. Faites-le dès que vous suspectez une compromission.

Modifier le préfixe des tables de la base de données

Par défaut, toutes les tables WordPress sont nommées wp_posts, wp_users et wp_options. Les injections SQL sont souvent conçues spécifiquement pour le préfixe standard.

Sur une nouvelle installation, spécifiez un préfixe non standard dans wp-config.php:

1$table_prefix = 'wp83x_';

Pour un site existant, la modification est plus difficile: vous devez renommer les tables dans la base de données et mettre à jour les valeurs dans usermeta et options. Ne tentez pas cela sans de solides compétences en phpMyAdmin et en SQL, le risque de mettre le site hors ligne est trop élevé.

Déplacer wp-config.php au-dessus de la racine web

wp-config.php contient le mot de passe de la base de données et les clés de chiffrement. Si le serveur web le sert accidentellement en texte brut, ce qui arrive lors d’une mise à jour PHP ratée, l’attaquant obtient tout.

Solution: déplacez wp-config.php un niveau au-dessus du répertoire racine du site, par exemple de /public_html/ vers le dossier d’accueil de l’hébergement. WordPress cherche automatiquement la configuration dans le répertoire parent, le code ne sera pas cassé.

Masquer la version de WordPress

Le générateur <meta name="generator" content="WordPress X.X.X"> dans le code source de la page est un cadeau pour les robots. Ils croisent la version avec une base de données de vulnérabilités connues et frappent avec précision.

Supprimez le générateur via functions.php:

1// Remove the WordPress generator meta tag from the page source code
2function no_generator() {
3 return '';
4}
5add_filter('the_generator', 'no_generator');

La fonction no_generator() retourne une chaîne vide au lieu de la sortie standard de la version. Le filtre the_generator intercepte la sortie de la balise meta et toutes ses variantes, pour les flux, RSS et l’API REST.

Supprimez également readme.html et liesmich.html de la racine de l’installation, ils exposent aussi la version. Après une mise à jour de WordPress, ces fichiers peuvent réapparaître, vérifiez une fois par mois.

Configurer les en-têtes de sécurité HTTP

Les en-têtes de réponse HTTP indiquent au navigateur comment traiter le contenu. Des en-têtes de sécurité correctement configurés bloquent le clickjacking, le XSS et l’usurpation de contenu.

Un ensemble minimal pour WordPress, ajoutez ces lignes au .htaccess:

1Header set X-Frame-Options "SAMEORIGIN"
2Header set X-Content-Type-Options "nosniff"
3Header set Referrer-Policy "strict-origin-when-cross-origin"
4Header set X-XSS-Protection "1; mode=block"

Le plugin HTTP Headers vous permet de faire la même chose via le panneau d’administration si vous préférez ne pas toucher à la configuration du serveur.

Pour une configuration avancée, utilisez une Content Security Policy. Mais attention: une CSP incorrecte casse le panneau d’administration, le chargement des polices et le fonctionnement des plugins. Déployez-la progressivement, en commençant par le mode Content-Security-Policy-Report-Only.

Restreindre les permissions des fichiers

Les permissions, la dernière ligne de défense. Si un attaquant téléverse un fichier mais ne peut pas l’exécuter, l’attaque est bloquée.

Règles de base:

  • Dossiers: 755, le propriétaire lit, écrit, exécute; le groupe et les autres lisent et exécutent.
  • Fichiers: 644, le propriétaire lit et écrit, les autres seulement lisent.
  • wp-config.php: 400, seul le propriétaire lit.
  • .htaccess: 444, lecture seule pour tous, si WordPress ne le modifie pas automatiquement.

Évitez absolument le 777. Oui, certains plugins demandent 777 sur wp-content/uploads/. Ne l’accordez pas. 755 sur le dossier et 644 sur les fichiers à l’intérieur suffisent pour les téléversements de médias.

Que faire si le site est déjà piraté

Un piratage est découvert de différentes manières: une redirection vers un casino, l’envoi de spam, un bandeau «Ce site a peut-être été piraté» dans les résultats de recherche Google, une plainte de l’hébergeur. La séquence d’actions:

  • Changez immédiatement tous les mots de passe: administrateur WordPress, FTP/SFTP, base de données, panneau de contrôle de l’hébergement. Commencez par ce dernier. Si le pirate est dans le panneau d’hébergement, il créera simplement un nouvel administrateur.

  • Restaurez le site à partir d’une sauvegarde faite AVANT le piratage. Une sauvegarde récente faite après la compromission contient très probablement une porte dérobée. S’il n’y a pas de sauvegarde, passez à l’étape suivante.

  • Installez Wordfence et lancez une analyse complète. Le plugin trouvera les fichiers cœur modifiés, le code suspect, les portes dérobées cachées. Supprimez tout ce que l’analyseur a signalé, puis remplacez le cœur de WordPress par une copie fraîche: le bouton «Réinstaller» sous Tableau de bord → Mises à jour.

  • *Vérifiez wp-content/uploads/ pour les fichiers .php.* Ils n’ont rien à faire là. Tout .php dans le dossier des téléversements est presque certainement un shell.

Regardez la vidéo ci-dessus, elle décortique les erreurs typiques de sécurité WordPress et comment les corriger, des mots de passe faibles aux permissions de fichiers incorrectes.

  • Connectez une surveillance externe. Sucuri, un service cloud avec un WAF et une équipe de réponse. Le WAF filtre le trafic avant qu’il n’atteigne le serveur. En cas d’intrusion, l’équipe Sucuri nettoie le site en quelques heures. Les tarifs démarrent à 199 $/an pour le forfait de base avec nettoyage et surveillance. Ce n’est pas gratuit, mais quand un site génère du chiffre d’affaires, une indisponibilité coûte plus cher.

Veillez à inscrire votre site sur Google Search Console. Si Google détecte du code malveillant, vous recevrez une notification avant que le site ne disparaisse des résultats de recherche.

Protection contre les ransomwares: pourquoi les sauvegardes règlent tout

personne en chemise noire à manches longues utilisant un macbook pro

Un ransomware chiffre les fichiers du site et exige une rançon. Les sites WordPress sont une cible fréquente: commandes, bases de données clients, contenu. Tout perdre du jour au lendemain est un scénario bien réel sans sauvegarde.

Trois règles:

  • Sauvegarde hors serveur. Cloud ou FTP distinct. UpdraftPlus et Duplicator automatisent la délocalisation.
  • Pare-feu et scanner. Wordfence + BBQ bloquent les téléversements de fichiers malveillants dès la requête.
  • Sources officielles uniquement. Le répertoire WordPress.org et les sites de développeurs ayant une réputation. Pas de thèmes «gratuits» issus de torrents.

Surveillance automatique de l’intégrité des fichiers

Protection côté serveur, pas une action ponctuelle. Regroupez les contrôles dans un script shell exécuté par cron, une fois par jour, résultats par email:

1SITE_ROOT="/absolute/path/to/public_html"
2
3find "$SITE_ROOT" -mtime -1 -name "*.php" \
4 -printf '%TY-%Tm-%Td %TT\t%p\n' >> /tmp/file-changes.log
5
6find "$SITE_ROOT" -mtime -7 -name "*.php" \
7 | xargs grep -l -i &quot;eval\|base64_decode\|iframe\|file_get_contents&quot; \
8 >> /tmp/suspicious-code.log
9
10find "$SITE_ROOT/wp-content/uploads" -name "*.php" -print \
11 >> /tmp/php-in-uploads.log
12
13find /home -type d -perm 0777 >> /tmp/perms.log
14find /home -type f -perm 0777 >> /tmp/perms.log
15
16mailx -s "Webserver File Audit $(date +%F)" admin@example.com \
17 < /tmp/suspicious-code.log

Le script s’exécute une fois par jour via cron. Le premier bloc find -mtime -1 affiche les fichiers PHP modifiés dans les dernières 24 heures, le principal détecteur d’intrusion. Le deuxième recherche des signatures de shell: eval, base64_decode, iframes cachées. Le troisième attrape du PHP dans le dossier uploads, là où du PHP légitime n’a jamais sa place. Le quatrième trouve les fichiers et dossiers avec les permissions 777. Le résultat est envoyé à l’email. Une surveillance proactive détecte une intrusion à un stade précoce, avant que Google ne le remarque et ne bannisse le site des résultats de recherche.

Sucuri: un pare-feu cloud pour quand vous n’avez pas le temps de bricoler

Comment ça fonctionne: le trafic passe par le proxy cloud de Sucuri avec un WAF, les requêtes malveillantes sont bloquées avant d’atteindre l’hébergement. Le site se charge plus vite grâce au CDN. Capacités clés: un WAF avec des signatures en temps réel, une protection DDoS, un nettoyage automatique des malwares.

Les forfaits démarrent à 199 $/an. Il n’y a pas de version gratuite, mais le plugin de scanner Sucuri vérifie les modifications des fichiers sans le WAF. Pour un site commercial, c’est un investissement justifié. Pour un blog personnel, Wordfence + BBQ suffisent.

⁉️🤔 FAQ

WordPress est-il sécurisé en lui-même?

Le cœur de WordPress est revu par des centaines de développeurs et d’auditeurs en sécurité. Le problème n’est pas le cœur, mais les extensions obsolètes, les thèmes provenant de sources non fiables et les mots de passe type 123456. Des mises à jour régulières associées à un pare-feu de base offrent une protection suffisante pour la plupart des sites.

Peut-on se passer d’extensions de sécurité?

Oui, si vous êtes prêt à configurer manuellement un pare-feu au niveau du serveur: iptables, mod_security, pare-feu 7G/8G dans .htaccess, suivre les CVE de chaque extension et écrire des scripts cron de surveillance. Pour tous les autres, installer Wordfence ou Solid Security prend une heure, contre des dizaines d’heures de travail manuel.

Les mises à jour sont-elles nécessaires si un pare-feu est en place?

Oui, absolument. Un pare-feu bloque les attaques venant de l’extérieur, mais si une extension présentant une vulnérabilité connue est installée, tôt ou tard un vecteur que le pare-feu ne capte pas sera trouvé. Mettre à jour tous les composants WordPress est la base sans laquelle les autres mesures fonctionnent à moitié.

Quelle extension de sécurité choisir?

Pour une protection minimale: BBQ Firewall, bloque les requêtes URL malveillantes, zéro configuration. Pour une protection complète: Wordfence, WAF, scanner, 2FA, protection anti-force brute, le tout dans la version gratuite. La combinaison BBQ + Wordfence couvre les deux couches sans conflits.

Qu’en est-il de l’API REST, faut-il la désactiver?

L’API REST est nécessaire à WordPress pour l’éditeur de blocs Gutenberg, un certain nombre d’extensions et les intégrations externes. La désactiver complètement cassera le panneau d’administration. Mieux vaut restreindre l’accès: ne laissez que les points de terminaison publics pour les utilisateurs non authentifiés. L’extension REST API Toolbox vous permet de configurer l’accès de manière flexible sans intervention chirurgicale.

À quelle fréquence analyser le site à la recherche de virus?

Automatiquement, quotidiennement via des scripts cron: vérification des fichiers modifiés, recherche de .php dans les téléversements. Manuellement, une fois par mois: ouvrez Wordfence, lancez une analyse complète, vérifiez la liste des extensions pour repérer celles qui sont abandonnées. Pas de mise à jour depuis plus d’un an, supprimez ou remplacez.

Peut-on perdre son classement Google à cause d’un piratage?

Oui, et rapidement. Google analyse les sites à la recherche de code malveillant et signale les sites infectés par un avertissement dans les résultats de recherche. Si le piratage n’est pas corrigé sous quelques semaines, le site est désindexé. Inscrivez votre site dans Google Search Console, vous recevrez une notification dès que le problème sera détecté.

Changer d’hébergeur aide-t-il à prévenir les piratages?

Partiellement. Un hébergement de qualité ajoute ses propres couches: isolation des comptes, surveillance réseau, mise à jour automatique de PHP. Mais l’hébergement ne protège pas contre une extension qui fuit et que vous avez installée vous-même, ni contre le mot de passe qwerty. La sécurité est un mille-feuille: hébergement plus mises à jour plus pare-feu plus droits d’accès plus sauvegardes.

Sécurité WordPress: par où commencer aujourd’hui

La règle principale de la sécurité WordPress est de ne pas chercher à tout traiter d’un coup. Commencez par trois actions:

  • S’il n’y a pas de pare-feu, installez BBQ Firewall. Une minute.
  • S’il n’y a pas de sauvegardes hors serveur, configurez UpdraftPlus avec téléversement vers le cloud. Dix minutes.
  • Si la 2FA n’est pas activée pour les administrateurs, activez-la via Wordfence. Cinq minutes.

Revenez ensuite à la liste ci-dessus: désactivez xmlrpc, mettez à jour les sels, désactivez l’éditeur de fichiers, configurez les en-têtes de sécurité. Un point par jour, et en une semaine votre site sera bien mieux protégé qu’il ne l’était hier.

Quelles mesures de sécurité fonctionnent déjà sur votre site? Dites-le-moi en commentaire, je suis curieux de comparer les approches.