Résumer l'article avec votre IA préférée :

Imaginez : un matin, vous ouvrez votre site et découvrez qu’il ne fonctionne plus. Contenu supprimé, fichiers modifiés, redirection vers sites bizarres. Vous avez été victime d’une attaque. Ce scénario catastrophe arrive chaque jour à des milliers de sites WordPress pour une seule raison : ils ne sont pas assez protégés.

C’est d’autant plus indispensable que c’est une obligation légale si vous stockez des données utilisateurs (email, adresse, commandes).  La conformité RGPD implique en effet que vous mettiez en place des mesures adéquates pour protéger les données de vos utilisateurs.

Les menaces sont nombreuses et maintenir WordPress à jour ne suffit pas : injection SQL, cross-site scripting (XSS), attaques par force brute, exploitation de failles de plugins… Le rapport Patchstack & Sucuri de 2023 a démontré que 97% des vulnérabilités de sur WordPress sont causées par des extensions, contre 3% par les thèmes et seulement 0,2% par le cœur de WordPress. Sans mesures de sécurité adaptées, votre site est une cible facile. Pourtant, des solutions existent : pare-feu, authentification renforcée, gestion des mises à jour, surveillance des fichiers sensibles, sauvegardes automatiques.

Sécuriser votre site, c’est garantir sa pérennité et sa fiabilité, vous l’avez compris. 
Reste à voir : comment sécuriser son site WordPress pour de bon ? On a pas tous une licence en cyber-sécurité ou les moyens de commander un « pen test » (test de pénétration) à un professionnel.

Dans ce guide complet, nous allons voir comment faire un audit de sécurité de votre site. Je vais également vous expliquer pourquoi et comment vous protéger. C’est bien beau de faire les choses, mais encore faut il comprendre pourquoi on les fait, plutôt que d’appliquer bêtement ce qu’on lit. De la configuration de Wordfence, pour détecter les vulnérabilités, à la sécurisation de votre .htaccess, la sécurisation des formulaires et la protection de l’administration, chaque étape vous aidera à renforcer votre site contre les attaques.

Ne prenez pas le risque de perdre des mois de travail à cause d’une simple négligence. 

C’est parti :

Avant de sécuriser votre site WordPress, il faut bien choisir son hébergement. Il en existe plusieurs types, qui vous donneront plus ou moins de liberté d’action et nécessiteront également plus ou moins de connaissances techniques pour être correctement configurés et sécurisés.

  1. L’hébergement mutualisé est l’option la plus économique : votre site partage un serveur avec d’autres sites, tout en ayant un espace qui lui est dédié sur le serveur.
    Avantages : Le prix est plus accessible, il y a peu d’options de configuration ce qui le rend facile à utiliser même pour un novice sans connaissances techniques.
    Inconvénients : C’est le moins performant puisqu’il partage les ressources serveur avec d’autres sites. Plus de risques de sécurité.
  2. L’hébergement VPS (Serveur privé virtuel). Un serveur est divisé en plusieurs parties indépendantes, offrant plus de contrôle qu’un hébergement mutualisé sans être aussi …. qu’un dédié.
    Avantages : Meilleures performances, plus de sécurité qu’un mutualisé.
    Inconvénients : Plus cher, nécessite parfois des connaissances techniques.
  3. L’hébergement dédié : Vous avez un serveur entier pour vous seul.
    Avantages : Performances totalement adaptées à vos besoins. Très sécurisé si la config est bien faite.
    Inconvénients : Son coût est élevé et il demande des compétences techniques pour la gestion et la configuration.
  4. L’hébergement cloud Votre site est hébergé sur plusieurs serveurs, ce qui assure une meilleure disponibilité.
    Avantages : Le plus fiable d’entre tous grâce à une grande disponibilité. Entièrement évolutif selon vos besoins.
    Inconvénients : Le prix sera variable selon la consommation de ressources. Plus complexe à configurer, ce ne sera pas simple pour une personne sans connaissances techniques.

Si vous débutez avec un petit site comme une vitrine, un hébergement mutualisé devrait amplement suffire. Pour un site plus important ou si l’affluence augmente, le VPS ou l’hébergement cloud sont des alternatives plus évolutives avec un coût maitrisé. Enfin si vous avez un gros projet avec des besoins spécifiques et un trafic important, un serveur dédié est alors l’option la plus appropriée.

Ensuite, ce sont vos besoins qui vont définir l’hébergement adapté pour votre projet web. Si vous avez peu de connaissances techniques, la disponibilité du support est un critère important à prendre en compte parce que vous aurez potentiellement besoin de leur aide pour gérer correctement votre hébergement. Renseigner vous sur :

  • Les horaires : Certains offrent une assistance 24/7, d’autres seulement aux heures de bureau.
  • Les moyens de contact : Chat en direct, téléphone, email, ticket de support… Plus il y en a, mieux c’est.
  • La réactivité : Consultez les avis clients pour voir si le support est efficace et rapide en cas de problème.

Les hébergements à bas coût proposent souvent moins d’options que leurs équivalents plus couteux. Attention alors aux tarifs des options supplémentaires : le nom de domaine est il inclus ? le certificat SSL est il disponible gratuitement ? combien coutent l’espace de stockage ou la bande passante supplémentaires ? Lisez bien les conditions avant de vous engager pour éviter les mauvaises surprises.

Je pars du principe que vous aller utiliser WordPress. Les technologies nécessaires seront donc apache, PHP et MySql, mais qu’en est il des autres technologies web ? Vous pourriez avoir besoin d’ajouter, plus tard, des scripts Python, Ruby ou CGI, un chat en temps réel avec Node.js… Votre hébergeur dispose t’il de ces technologies ?

Seule la connaissance profonde de vos besoins (ou de ceux de votre client) vous permettrons de choisir un hébergement réellement adapté à votre projet.

Personnellement, j’ai fait le choix de l’offre unique de O2switch qui correspondait parfaitement à mes besoins. Malheureusement, cette offre n’est plus unique depuis février 2025 et a été scindée en 3 propositions tarifaires qui vont me faire perdre en performance si je veux garder mon tarif actuel.

Ce qui a fait la popularité de WordPress est son système de thèmes et de plugins (extensions en français) qui permettent de personnaliser l’apparence et les fonctionnalités de votre site. Le thème définit le design du site, les couleurs, la mise en page, les typographies, etc. et les plugins ajoutent des fonctionnalités telles que formulaire de contact, sécurité ou personnalisation des balises SEO.

Bien sur un thème doit d’abord vous plaire visuellement. Une fois une première sélection faite, voici quelques points d’attention qui vous permettront de sélectionner une option à long terme et sécurisé.

Un thème bien noté et utilisé par de nombreux sites est souvent un gage de qualité.

Regardez les avis et la note sur le répertoire des thèmes WordPress ou les marketplaces (ThemeForest, Envato, etc.).

Utiliser un thème éprouvé ou avec un grand nombre d’installations actives, comme Astra, Blocksy ou GeneratePress, vous garantie que le thème ne sera pas abandonné dans quelques mois et qu’il continuera, non seulement à être maintenu, ce qui est un gage de sécurité, mais également à évoluer afin de proposer de nouvelles fonctionnalités qui devraient vous faciliter la vie.

Les « builders » sont des outils qui permettent de créer des pages sans coder. Certains thèmes sont spécialement conçus pour fonctionner avec des builders :

  • Hello elementor est un « starter theme » pour le builder Elementor (le plus populaire et intuitif)
  • Divi est à la fois un thème et un builder.
  • Les thèmes basés sur des blocs du répertoire officiel sont spécialement conçus pour Gutenberg, léditeur natif de WordPress depuis fin 2018.

Si vous avez fait le chois d’un builder autre que Gutenberg, faites attention à choisir un thème compatible pour éviter les conflits.

Veillez également à ne jamais installer d’autre builder en parallèle sous prétexte de vouloir telle fonctionnalité. Vous allez non seulement complexifier la gestion du site et augmenter le risque de conflits mais également alourdir considérablement son chargement.

Un thème non mis à jour depuis longtemps à plus de risques de poser des problèmes de compatibilité et de sécurité.
Vérifiez toujours :

  • la version de PHP minimum nécessaire : elle doit être récente et compatible avec la version de PHP sur votre serveur,
  • la date de dernière mise à jour : un bon thème est mis à jour régulièrement,
  • si le support est actif : un bon support peut être utile en cas de bug ou de besoin de nouvelle fonctionnalité. Sur le répertoire officiel tous les thèmes ont un forum de support, accessible à une url de type https://wordpress.org/support/theme/[nomdutheme]
La page du thème Ollie sur le répertoire officiel des plugins de WordPress
La page du thème Ollie, utilisé sur ce site, sur le répertoire officiel des plugins de WordPress

Certains thèmes spécifiques, très fournis en fonctionnalités, nécessitent de nombreux plugins pour fonctionner, ce qui peut avoir pour effet de ralentir votre site si l’hébergement n’est pas correctement dimensionné.

N’oubliez pas que ce qui fait la force de WordPress, c’est sa modularité : il vaut mieux un thème léger, où on ajoute uniquement les briques nécessaires, plutôt qu’un thème fait fait un tas de choses dont on a pas besoin. Évitez donc les thèmes trop lourds ou avec des fonctionnalités qui ne sont pas utiles à votre site et testez la vitesse de chargement du site avec un outil comme Lighthouse ou PageSpeed Insights.

Bien que WordPress soit gratuit et open source, une partie de l’écosystème est payante, ce sont les thèmes et plugins dits « premium » ou « freemium ».

  • Thèmes gratuits : suffisants pour un petit site, en général limités en options et en support.
    Les thèmes par défaut de WordPress sont gratuits : Twenty Twenty-Five, Twenty Twenty-Four… il y en a un nouveau chaque année.
  • Thème freemiums disposent d’une version gratuite limité et d’une version premium qui sera plus fournie en fonctionnalités.
    Astra est l’un des plus connus et utilisés comme freemium avec son pendant Astra pro en version premium.
  • Thèmes premium (payants) sont ceux qui offrent plus de personnalisation et de fonctionnalités, avec un support technique en général plus disponible.
    Divi est à la fois un builder et un thème mais n’existe pas en gratuit.

Si votre projet est sérieux, un thème premium peut être un bon investissement pour limiter le nombre de plugins supplémentaires.

Un thème enfant est une déclinaison du thème principal, alors appelé parent, qui permet de personnaliser le thème principal sans modifier ses fichiers d’origine. Il est utile pour ajouter du code personnalisé (CSS, PHP, js…) sans risque pour le parent et surtout pour conserver vos modifications lors des mises à jour du thème principal.

Dans la plupart des cas d’utilisation basiques d’un thème, le thème enfant n’est pas nécessaire mais si on commence à avoir besoin de personnalisations avancées, qui ne sont pas possibles directement dans la configuration du thème, alors le thème enfant est la solution.

Il y a plusieurs façon de procéder en fonction de votre aisance avec le code :

Pour les débutants, le plus simple consiste à utiliser un plugin. Si vous utilisez un thème basé sur les blocs, il y a Create Block Theme et sinon Child Theme Configurator qui reste un bon plugin malgré son absence de mise à jour depuis près d’un an.

Ceux qui n’ont pas froid aux yeux ou qui sont simplement plus à l’aise avec le code peuvent utiliser la technique manuelle en utilisant un client FTP pour accéder aux fichiers sur le serveur.

  1. Créez un dossier pour le thème enfant dans wp-content/themes. On général on nomme le dossier enfant du nom du thème principal avec -child, comme astra-child ou ollie-child.
  2. Dans ce nouveau dossier, ajoutez un fichier style.css qui devra obligatoirement contenir les informations de base du thème :
    /**
    Theme Name: Nom du theme
    Template: nomduparent
    [... autres infos]
    Description:  Personnal variation of the Ollie Theme
     Author:       Stephanie VESTER
     Author URI:   https://www.stephanie-vester.fr
     Version:      1.0.0
     License:      GNU General Public License v2 or later
     License URI:  http://www.gnu.org/licenses/gpl-2.0.html
     Tags:         custom, homemade
    Text Domain:  ollie-child
    */
  3. Dans le même dossier, ajoutez un fichier functions.php qui contiendra ce code :
    <?php
    add_action( 'wp_enqueue_scripts', 'grand_sunrise_enqueue_styles' );
    function grand_sunrise_enqueue_styles() {
    wp_enqueue_style('grand-sunrise-style',get_stylesheet_uri());
    }
  4. Activez le thème enfant depuis le tableau de bord WordPress.

Pour plus de détails sur le fonctionnement des thèmes enfants, vous pouvez vous référer à la documentation officielle de WordPress, en anglais.

Dès l’installation de WordPress, de bonnes pratiques permettent de limiter les risques. 

  • La première chose à faire est de récupérer l’archive de la dernière version de WordPress sur le site officiel wordpress.org. 
  • Pendant la configuration, évitez d’utiliser « admin » comme nom d’utilisateur, choisissez quelque chose de plus original et difficile à deviner. 
  • Toujours pendant l’installation initiale, pensez à modifier le préfixe des tables de la base de données par défaut (wp_). C’est un moyen simple de complexifier le travail des hackeurs en rendant plus difficile l’accès à vos données par des pirates.
  • Enfin, si plusieurs personnes sont amenées à travailler sur le site, ne partagez pas vos login et mot de passe*. Créez un compte utilisateur pour chaque personne, en accordant exclusivement les permissions dont il a besoin.

Voilà, les bases sont posées, on peut maintenant s’occuper de comprendre tout ça.

On ne sait jamais quand un bug ou un plantage peut arriver, donc par principe de précaution, il faut avoir des sauvegardes régulières de la base de données et des fichiers. Une fréquence hebdomadaire est un bon point de départ, mais n’hésitez pas à sauvegarder plus souvent si votre site évolue rapidement.

Des extensions comme UpdraftPlus ou Duplicator peuvent automatiser ce processus. Stockez toujours vos sauvegardes sur un serveur distant ou dans un espace de stockage en nuage pour plus de sécurité.

Au delà des sauvegardes automatiques, il faut aussi se protéger avec des sauvegardes manuelles avant toute modification risquée : changement de thème, ajout de plugin, chercher/remplacer en base de données… toutes manipulations doivent systématiquement donner lieu à une sauvegarde avant de commencer. C’est une sécurité générale qui vous épargnera bien des sueurs froides.

Le top du top, c’est d’avoir accès à un site de test (staging, préprod, local…) pour tester les mises à jours en dehors du site réel et les appliquer en production une fois qu’on s’est assuré de l’absence de risque. O2switch par exemple le permet grâce à l’outils WP Tiger. 

Ce n’est malheureusement pas disponible chez tous les hébergeurs. Si vous n’avez pas accès à une préprod, procédez de la manière suivante :

  1. Sauvegardez toujours l’ensemble du site (fichiers et base de données) avant de lancer une mise à jour.
  2. Effectuez les mises à jour une à une. Si un problème survient, vous saurez plus facilement quel plugin est en cause que si vous mettez tout à jour d’un coup. 
  3. Après chaque mise à jours, testez votre site pour vous assurer que tout fonctionne correctement.

WordPress propose un système de mise à jour automatique qui se planifient d’elles même à des heures où le site à peu de trafic (la nuit). Ca peut sembler bien pratique mais ça comportent malgré tout des risques : si une mise à jour cause un problème, le site pourrait devenir partiellement ou totalement inaccessible sans vous vous en aillez connaissance.

Pesez le pour et le contre.

Il est possible d’opter pour un entre deux concernant les mises à jour du cœur de WordPress en autorisant l’automatisation des mises à jour mineures (1.2.3) mais pas des majeures (1.2.0).

La surveillance continue de votre site est le meilleur moyen de détecter une activité suspecte. Ca vous permettra de réagir rapidement en cas de problème et de minimiser les dégâts potentiels. Voici les 2 meilleures pratiques que tout administrateur de site devrait mettre en place :

Les logs sont des fichiers qui enregistrent en temps réel toutes les actions effectuées sur votre serveur : lecture d’un fichier par une adresse IP spécifique, modification ou suppression de fichiers, tentatives de connexion à l’administration… Analyser ces fichiers permet de repérer des comportements anormaux, comme des accès répétés depuis une adresse IP inconnue ou des modifications non autorisées de fichiers. 

Pour faciliter cette surveillance, des plugins comme WP Security Audit Log permettent de visualiser ces événements depuis le tableau de bord WordPress. Ils offrent une interface claire et envoient des alertes en cas d’activité suspecte, ce qui évite d’avoir à analyser manuellement les fichiers logs du serveur.

Le web évolue en permanence et de nouvelles failles sont régulièrement découvertes dans WordPress, les thèmes et les extensions. Pour anticiper les risques tenez vous informé des mises à jour et des alertes de sécurité pour appliquer rapidement les correctifs. 

Vous pouvez commencer par vous abonner à la newsletter officielle de WordPress et celles des plugins que vous utilisez, pour être informé des mises à jour critiques. Suivre leurs réseaux sociaux et/ou leurs articles de blog est également un bon moyen de se tenir informé. 

Enfin, il y a les media spécialisés : le débrief du mixeur, par exemple, est une newsletter de l’agence SEOMix de Daniel Roch, qui publie les actualités WordPress, y compris les failles de sécurité. D’autres sites spécialisés en cybersécurité ou en maintenance publient des rapports sur les failles de sécurité découvertes. A vous de choisir vos sources.

Dernières alertes sécurite dans une newsletter seomix

Le protocole HTTPS, rendu possible grâce à un certificat SSL, est devenu incontournable pour la sécurité et pour le SEO. Il sert à chiffrer les données échangées entre le serveur et ses visiteurs, protégeant ainsi les informations sensibles. De plus, il améliore votre référencement puisque Google favorise les sites qui utilisent https face à ceux qui ne le font pas.

Voici comment le mettre en place :

  1. Obtenez un certificat SSL auprès d’un fournisseur de confiance (Let’s encrypt est OK).
  2. Configurez le certificat via votre hébergeur.
  3. Forcez le trafic HTTPS sur votre site WordPress.

Maintenant que le site est passé en HTTPS, l’appel aux ressources « non sécurisées » enregistrées en base de donnée provoque des erreurs appelée « mixed content » (contenus mixé en français). Lien, images, documents… autant d’erreurs qui apparaissent dans la console de développeurs.

En faisant une recherche sur ce problème vous risquez de tomber sur le plugin Really Simple SSL, (désormais renommé Really Simple Security) soit disant une solution pour résoudre ce problème. 
Que nenni : il est comme une main posée sur une hémorragie, ça semble aider sur le coup, mais ce n’est pas une solution à long terme. Je vous conseille de ne l’utiliser que de manière temporaire, le temps de corriger les URL manuellement. 

Voyons son fonctionnement : lorsqu’une requête est envoyée au serveur pour afficher une page du site, Really Simple SSL parcourt le contenu de la page avant son affichage dans le navigateur et remplace les http:// par des https://. En conséquence de quoi la page est plus longue à s’afficher et la consommation de mémoire est plus importante.

Mais ce n’est pas le pire : vous risquez d’être pénalisé concernant votre référencement ! Comment ? Google n’aime pas le http, ni le mixed content. Hors, les robots d’indexation ne sont pas des navigateurs. N’ayant pas d’étape de rendu visuel, le plugin n’intervient jamais dans le rendu des pages pour les robots, lui servant donc des pages pleines de mixed content 🙁

Vous l’aurez compris, la seule véritable solution viable consiste à modifier les URL http en https partout où elles se trouvent. En réalité, rien de bien compliqué : un bon vieux chercher remplacer. 

Le plugin gratuit Better Search and Replace vous aidera dans cette étape. Vous n’aurez qu’a lui demander de trouver toutes les occurrences de http://monsite.fr et de les remplacer par https://monsite.fr et le tour est joué. 

Petites sécurité avant bien sur, on sauvegarde et on fait un essai en mode test avant d’agir, pour s’assurer de ne rien casser. 

Le pare-feu est un outil indispensable pour sécuriser votre site. Sa fonction est d’analyser toutes les requêtes entrantes et de bloquer celles qui sont jugées malveillantes, avant qu’elles n’atteignent votre site.

Un pare-feu bien configuré vous protège contre la majeure partie des attaques courantes comme les force brute, qui visent à deviner vos identifiants de connexion, les attaques par injection SQL ou XSS, qui exploitent des vulnérabilités WordPress pour voler des données ou compromettre votre site, ou les attaques par déni de service (DDoS), qui visent à surcharger votre serveur avec un grand nombre de requêtes très rapides. 

On distingue deux types de pare-feux :

1. Pare-feu au niveau DNS

Ce type de pare-feu filtre le trafic de votre site en le faisant passer par des serveurs proxy basés dans le cloud. Seules les requêtes légitimes sont ensuite transmises à votre serveur, bloquant ainsi les tentatives malveillantes avant même qu’elles ne l’atteignent.

Il offre 2 avantages majeurs : 

  • Détection rapide des menaces : en surveillant l’activité de milliers de sites, ils identifient et bloquent plus efficacement les attaques provenant de réseaux de zombies (botnets) ou d’adresses IP malveillantes.
  • Optimisation des performances : en filtrant le trafic avant qu’il n’atteigne votre serveur, ils réduisent la consommation de ressources et évitent les surcharges pouvant entraîner des pannes.

2. Pare-feu au niveau de l’application

On les appelle aussi WAF, pour Web App Firewall. Ils analysent le trafic directement sur votre serveur, avant que WordPress ne charge ses scripts. Bien qu’ils apportent une protection efficace, ils sont moins performants qu’un pare-feu DNS, car ils ne réduisent pas la charge sur le serveur.

Tous les hébergeurs ne proposent pas de pare-feu au niveau du serveur, et lorsqu’ils le font, sa configuration peut être complexe. Dans le doute, il est donc recommandé d’installer un pare-feu applicatif (WAF) pour renforcer la protection.

De nombreuse extensions de sécurité qui existent sur WordPress intègrent un pare-feu. Voici 4 des plus populaires : 

  • pare-feu DNS reconnu et fiable, 
  • offre une protection complète en amont du site, 
  • le fait de filtrer les requêtes en amont optimise les performances,
  • un contrôle très fin des paramètres de sécurité.
  • un pare-feu en local directement intégré à WordPress,
  • analyse votre site à la recherche de malwares, de fichiers modifiés et de vulnérabilités,
  • dispose d’un système de blocage IP pour stopper les attaquants identifiés,
  • d’autres options de sécurité comme la limitation des tentatives de login. 
  • pare-feu cloud qui bloque les menaces avant qu’elles n’atteignent votre serveur,
  • inclut un monitoring de l’intégrité des fichiers et un scanner de malwares, 
  • dispose d’options supplémentaires telle que le déport de l’URL de login.
  • facile à utiliser avec une interface intuitive,
  • vérifie les permissions des fichiers et bloque les vulnérabilités courantes,
  • fonctionnalité exclusive de détection de conflit entre extensions, en version pro uniquement.

Comme d’habitude, chacun à ses avantages et inconvénient. Wordfence est néanmoins souvent le choix recommandé en raison de sa version gratuite très complète et de sa facilité de configuration.

Wordfence propose une protection efficace dès son installation mais pour tirer le meilleur parti du plugin, il est important de le configurer correctement et de comprendre ce que vous faites.

  1. Allez dans Extensions > Ajouter depuis votre tableau de bord WordPress.
  2. Recherchez Wordfence Security.
  3. Installez et activez le plugin.
  4. Après l’activation, le plugin vous demandera de créer un compte sur leur site puis d’entrer la clé de licence. Le processus a été simplifié et automatisé au maximum, ça ne devrait pas vous causer de problème.
  5. Enfin, il vous demandera si vous souhaitez activer l’option d’apprentissage du pare-feu. Choisissez Oui pour que Wordfence analyse le comportement normal de votre site pendant une période donnée, avant d’activer les blocages automatiques.
  1. Allez dans Wordfence > Pare-feu.
  2. Dans l’onglet Gérer le pare-feu, passez le pare-feu en mode Protection étendue (au lieu de Basique). Cette option permet à Wordfence d’agir avant que les fichiers de WordPress ne chargent, bloquant ainsi plus efficacement les attaques.
  3. Cliquez sur Optimiser le pare-feu et suivez les instructions pour modifier le fichier .htaccess.

Wordfence inclut un scanner qui vérifie les fichiers sur le serveur, à la recherche de malwares, plugins vulnérables et modifications suspectes.

  1. Allez dans Wordfence > Scan.
  2. Cliquez sur Lancer un scan pour analyser votre site immédiatement.
  3. Dans Paramètres de scan, réglez la fréquence d’analyse sur quotidienne pour une meilleure sécurité.
  4. Assurez-vous que les options suivantes sont activées :
    • Scan des fichiers WordPress modifiés
    • Vérification des vulnérabilités des plugins et thèmes
    • Scan des fichiers inconnus dans wp-content

Lorsque Wordfence détectera un problème, il affichera un rapport détaillé et proposera des actions correctives.

Vous pouvez recevoir des emails d’alertes en cas de détection de menace.

  1. Allez dans Wordfence > Toutes les options > Alertes.
  2. Activez les notifications pour recevoir un email en cas :
    • De tentative de connexion suspecte.
    • De fichiers WordPress modifiés ou corrompus.
    • D’attaques répétées sur votre site.
  3. Assurez-vous que l’email que vous avez renseigné à l’installation est correct.

Les attaques par force brute consistent à essayer de deviner votre mot de passe en testant des milliers de combinaisons. Wordfence permet de limiter ces tentatives.

  1. Allez dans Wordfence > Toutes les options > Protection contre les attaques par force brute.
  2. Configurez les paramètres suivants :
    • Bloquer après 3 tentatives de connexion échouées.
    • Interdire temporairement une adresse IP après 5 blocages.
    • Bloquer les utilisateurs qui utilisent des identifiants courants (admin, test, etc.).

Vous pouvez activer le mode « Blocage automatique des IPs suspectes » pour que Wordfence s’en occupe pour vous. Sinon, vous pouvez le faire manuellement :

  1. Allez dans Wordfence > Outils > Trafic en direct.
  2. Identifiez les adresses IP suspectes qui envoient un grand nombre de requêtes.
  3. Bloquez ces IP en les ajoutant à la liste noire de Wordfence dans Wordfence > Bloquer IPs.

La protection du couple login / mot de passe est importante, comme sur tous les sites qui ont un système d’authentification. Voici quelques mesures simple à mettre en place pour vous, pour vos utilisateurs et de manière générale sur tous les sites web que vous utilisez :

  • Utilisez des mots de passe forts : Optez pour des mots de passe longs, complexes et uniques. Certains plugins de sécurité permettent également d’empêcher l’utilisation de mots de passe qui ont déjà fuité. 
  • Activez l’authentification à deux facteurs (2FA) : Cette méthode ajoute une couche de sécurité supplémentaire en demandant une deuxième forme d’identification après le mot de passe. Wordfence free le propose, sinon des extensions comme Google Authenticator ou Authy vous permettrons le l’ajouter. 

WordPress étant à l’origine un moteur de blog, il dispose par défaut d’une page pour chaque auteur, qui permet de réunir l’ensemble des articles publiés par celui ci. Si votre site à un blog, vous avez tout intérêt à garder et même à améliorer ces pages avec des informations uniques, comme la biographie de l’auteur ou des microdonnées qui pourront enrichir ce profil.

Cette fonctionnalité pose néanmoins 2 problèmes :

  • sécurité : elle expose le nom d’utilisateur des auteurs, qui leur sert à se loger,
  • SEO : s’il n’y a qu’un seul auteur et pas d’informations uniques, la page est purement et simplement un contenu dupliqué de l’index du blog.

Il est donc nécessaire de protégez les noms d’utilisateur à la fois dans les URL et dans le contenu de votre site. Pour ça, je vous recommande 2 extensions :

  • SX Username Security, qui cache le username et l’ID utilisateur dans le code en permettant de choisir un nom d’affichage différent du nom réel (un nom aléatoire est défini par défaut),
  • Edit Author Slug, qui permet de changer l’URL par défaut /author/username, y compris dans les sitemap

Même ainsi, il reste un petit problème : essayez de taper nomdusite.com/?author=x en remplaçant x par 1. Horreur ! vous êtes redirigé vers la page auteur du premier compte qui a été créé, donc le compte adminmonsite.com/author/idenfiant_auteur.

S’il n’y a qu’un seul auteur/administrateur ou si votre site est un e-commerce, vous avez tout intérêt à ce que personne ne puisse accéder à cette page.

Pour s’en protéger, plusieurs solutions, selon votre niveau.

Débutant : avec un plugin comme Disable Author Archive

Niveau intermédiaire, avec un thème enfant ou un plugin pour ajouter du code. Voici le PHP à utiliser :  

function stephdevwp_author_page_redirect() {
    if (is_author()) {
        wp_redirect(home_url());
    }
}

add_action('template_redirect', 'stephdevwp_author_page_redirect');

Niveau avancé, avec le code suivant dans le fichier .htaccess (après avoir sauvegardé l’original bien sur ! ) :

#Désactiver pages auteur
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_URI}  ^/$
RewriteCond %{QUERY_STRING} ^/?author=([0-9]*) [NC]
RewriteRule ^(.*)$ http://%{HTTP_HOST}/ ? [L,R=301,NC]
</IfModule>

Si vous n’utilisez pas les pages auteurs, vous avez tout intérêt à désactiver le sitemap des auteurs qui liste les pages auteurs. S’il est utile à l’indexation de ces pages lorsqu’elles existent, sans changement des URL (comme vu plus haut), il dévoile l’intégralité des noms d’utilisateurs ! A désactiver depuis les réglages de votre plugin SEO en générale. 

Dans le cas des sites e-commerce, il est crucial de protéger les informations des utilisateurs : c’est une responsabilité légale. Assurez-vous que le sitemap auteur est désactivé depuis la configuration de votre plugin SEO.

Désactivation du sitemap auteur sur Yoast SEO

Voici la marche à suivre selon votre plugin SEO :

  • Sur Yoast : menu Yoast SEO > Réglages > avancé > Archives d’auteurs/autrice. 
  • Sur SEO Press : Plan de site XML/HTML > décocher l’option « Activer les plans de site XML des auteurs/autrices ».
  • RankMath : Rank Math SEO > Réglages plan de sites > Auteurs > basculer le bouton sur off.
  • AllinOneSEO : menu All in one SEO > Plans de site > Sitemap général, faites défiler la page jusqu’à la section sitemaps des auteurs / utilisateurs et désactivez l’option « Activer le Sitemap des auteurs » en basculant l’interrupteur sur « Off ».
  • SEOKey : SEOKEY > réglages > basculer le bouton sur off à la question « les pages d’auteur sont-elles utiles à Google ou aux utilisateurs ? » 

Tous les sites WordPress ont la même URL d’admin par défaut (/wp-admin), ce qui facilite grandement le travail des robots pirates, surtout couplé avec un sitemap auteurs qui dévoile les identifiants. Changer l’URL de connexion leur rend donc la tâche plus difficile.

Certain WAF comme Sucuri le proposent par défaut, sinon l’extension gratuit WPS Hide Login le permettent facilement.

Les tentatives de connexion multiples peuvent être le signe d’une attaque par force brute. Limiter ces tentatives réduit le risque de piratage.

Certains WAF, comme Wordfence, offrent cette fonctionnalité par défaut.

Capture d'écran de l'interface de Wordfence concernant les limites de tentatives de connexion
Capture d’écran de l’interface de Wordfence concernant les limites de tentatives de connexion

Sinon, utilisez un plugin de sécurité spécifique, comme Limit Login Attempts qui limite le nombre de tentatives de connexion et bloque les adresses IP après plusieurs échecs.

Il y en a systématiquement un à la racine du dossier d’installation de WordPress et on peut également en avoir un dans tous les autres les répertoires pour paramétrer plus finement chacun d’eux. Il n’est pas rare d’en trouver dans les dossiers de plugins par exemple.

Ce fichier .htaccess est un des éléments centraux de votre site web : Il configure certains paramètres serveurs, définir les règles de réécriture d’url ou de redirection et contrôle l’accès à votre site. On a déjà vu quelques cas d’utilisation plus haut en matière de sécurité, voici d’autres règles qui peuvent encore renforcer la sécurité.

  1. Accédez à votre serveur via un client FTP ou le gestionnaire de fichiers de votre hébergeur.
  2. Faite une sauvegarde du fichier original, sur le serveur ou en local.
  3. Récupérez le fichier .htaccess sur votre ordinateur pour y inclure vos modifications
  4. Envoyez le nouveau fichier sur le serveur
  5. Rafraichissez une page de votre site : si quelque chose ne va pas dans le fichier, il y a fort à parier que plus rien n’apparaitra, dans ce cas, remettez la sauvegarde.

Voici les 3 principales choses qu’on va protéger :

  • Bloquer l’accès aux fichiers sensibles comme wp-config.php.
  • Désactiver l’affichage du contenu des répertoires.
# Bloquer l'accès au fichier config.php
<Files wp-config.php>
    Order allow,deny
    Deny from all
</Files>

# Désactiver l'affichage des répertoires
Options -Indexes

N’oubliez pas les autres bouts de code de tout à l’heure pour sécuriser les ID utilisateurs etc.

Attention quand même : ce fichier sert également à d’autres choses, dont l’URL rewriting, qui fait qu’on a de jolies URLs avec des mots clés dedans plutôt que des ?param=1. 

Faites particulièrement attention au fichier wp-config.php (qui contient le mot de passe de connexion à la base de données) et les dossiers wp-admin et wp-includes.

Attention à configurer correctement les permissions des fichiers et dossiers de votre site. Certaines personnes un peu brutes s’amusent à passer les fichiers qu’ils n’arrivent pas à modifier en permissions 777 pour être surs d’y arriver mais en faisant ça, ils permettent à n’importe qui de faire pareil !

WordPress recommande de régler tous les répertoires sur 755 et tous les fichiers sur 644 et c’est ce qu’il fait par défaut mais si on fait des devs en local, qu’on envoie des fichiers via FTP, les permissions peuvent être différentes. A surveiller de temps à autre. 

Attention également à l’option d’édition de fichiers interne à WordPress, qui permettre de manipuler les fichiers du thème directement depuis l’administration. Si vous trouvez ça pratique, c’est dommage ! Parce qu’il vaut mieux l’empêcher en ajoutant les lignes suivantes dans wp-config.php.

define('DISALLOW_FILE_EDIT', true);

Les headers de sécurité (ou en-têtes HTTP de sécurité) sont des règles envoyées par votre serveur au navigateur des visiteurs. Elles renforcent la protection de votre site contre certaines attaques comme le vol de données, les scripts malveillants ou le clickjacking.

Comment savoir si vous avez ces entêtes ? Il suffit de vous rendre sur le site https://securityheaders.com/, d’entrer l’URL de votre site et de constater le résultat. Souvent, c’est F. Parfois c’est D, rarement c’est A+.

Resultat d'un test de header de sécurité sur securityheaders.com

Oblige les navigateurs à utiliser uniquement HTTPS pour votre site, empêchant ainsi les attaques via HTTP. Protège contre les attaques dites « downgrade » où un pirate force un retour en HTTP et évite que les visiteurs accèdent accidentellement à votre site en HTTP (non sécurisé).

Strict-Transport-Security: max-age=31536000; includeSubDomains

Protège contre les attaques XSS (injection de scripts malveillants) en limitant les sources de contenu autorisées (scripts, images, styles…). Empêche un attaquant d’exécuter du code malveillant sur votre site via JavaScript injecté et réduit le risque de vol de données via des scripts tiers non autorisés.

Content-Security-Policy: default-src 'self'; script-src 'self' https://apis.google.com
# il faut ajouter manuellement toutes les URLs autorisées à charger des ressources dans le type associé

Empêche votre site d’être affiché dans une iframe sur un autre site, protégeant ainsi contre le clickjacking (une technique qui piège les utilisateurs en les faisant cliquer sur des éléments invisibles).
Évite qu’un attaquant affiche votre site dans une page invisible et trompe les utilisateurs.

X-Frame-Options: SAMEORIGIN

Empêche le navigateur d’essayer de deviner le type de contenu d’un fichier (MIME sniffing) et bloque l’exécution accidentelle de fichiers malveillants déguisés en images ou documents.

X-Content-Type-Options: nosniff

Contrôle les informations envoyées par le navigateur lorsqu’un visiteur clique sur un lien sortant. Protège la vie privée des visiteurs en limitant les informations partagées avec d’autres sites.

Referrer-Policy: strict-origin-when-cross-origin

Contrôle l’accès aux fonctionnalités du navigateur (caméra, micro, géolocalisation…) pour éviter les abus. Empêche l’accès abusif à certaines fonctionnalités sans consentement.

Exemple de configuration bloquant la caméra et le micro :

Permissions-Policy: geolocation=(), microphone=(), camera=()

Le plugin Headers Security Advanced & HSTS WP permet d’ajouter facilement une partie des headers de sécurité nécessaires. Néanmoins, les URL autorisées par la Content Security Policy doivent toujours être listées manuellement. C’est fastidieux mais nécessaire pour être réellement en sécurité.

Une fois que ta configuration est terminée, vous pouvez même retirer le plugin. Pour ça, il suffit de

  • sauvegarder le fichier htaccess avec toutes les règles,
  • supprimer le plugin
  • réinstaller le .htaccess sauvegardé précédement

Si vous n’avez vraiment pas envie de vous en occuper, c’est une prestation que je propose, n’hésitez pas à me contacter pour que je vous soulage de ce fardeau ;).

Vous pouvez ajouter ces headers dans le fichier .htaccess (si vous utilisez Apache) :

<IfModule mod_headers.c>
Header set Strict-Transport-Security "max-age=31536000; includeSubDomains"
Header set Content-Security-Policy "default-src 'self'; script-src 'self' https://apis.google.com"
Header set X-Frame-Options "SAMEORIGIN"
Header set X-Content-Type-Options "nosniff"
Header set Referrer-Policy "strict-origin-when-cross-origin"
Header set Permissions-Policy "geolocation=(), microphone=(), camera=()"
</IfModule>

Si vous utilisez NGINX, ajoutez-les dans votre fichier de configuration :

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";
add_header Content-Security-Policy "default-src 'self'; script-src 'self' https://apis.google.com";
add_header X-Frame-Options "SAMEORIGIN";
add_header X-Content-Type-Options "nosniff";
add_header Referrer-Policy "strict-origin-when-cross-origin";
add_header Permissions-Policy "geolocation=(), microphone=(), camera=()";

WordPress offre plusieurs fonctionnalités qui permettent aux applications et services externes d’interagir avec votre site. Cependant, certaines de ces fonctionnalités peuvent aussi représenter un risque pour la sécurité. Il est donc important de les sécuriser ou de les désactiver si vous ne les utilisez pas.

L’API REST a été introduite dans WordPress 4.7 pour permettre aux développeurs d’accéder aux données du site via des requêtes HTTP. Elle permet, par exemple, à une application mobile ou à un service tiers de récupérer des articles, de publier du contenu ou de modifier des paramètres sans passer par l’interface d’administration.

Si cette API est très utile pour les développeurs, elle peut aussi être exploitée par des attaquants pour récupérer des informations sensibles ou mener des attaques automatisées.

Si elle n’est pas sécurisée, l’API REST peut exposer des informations importantes comme :

  • La liste des utilisateurs du site, y compris les administrateurs, ce qui facilite les attaques par force brute.
  • Les articles et pages, même ceux en brouillon ou privés.
  • Les métadonnées des contenus, qui peuvent contenir des informations confidentielles.

Les pirates peuvent exploiter ces données pour identifier des failles et lancer des attaques. Il est donc essentiel de bloquer l’accès anonyme à l’API REST si vous n’avez pas d’usage spécifique pour cette fonctionnalité.

Il existe plusieurs méthodes pour sécuriser ou bloquer complètement l’API REST pour les utilisateurs non connectés.

Si vous êtes hébergé chez o2switch, l’outil WP Tiger permet de bloquer facilement les requêtes API REST anonymes. Cet outil de sécurité intégré vous permet d’activer différentes protections en quelques clics, notamment contre l’API REST, XML-RPC et d’autres vulnérabilités courantes de WordPress.

Pour ce faire, rien de sorcier :

  1. Connectez-vous à votre cPanel chez o2switch.
  2. Accédez à WP Tiger.
  3. Activez l’option pour bloquer les requêtes API REST anonymes.
  4. Enregistrez les modifications.

Cette solution est rapide et simple pour les utilisateurs qui ne souhaitent pas modifier leur site manuellement.

Un WAF (pare-feu applicatif web) permet de filtrer et bloquer certaines requêtes malveillantes avant qu’elles n’atteignent votre site.

Si vous utilisez un service comme Cloudflare ou Sucuri, vous pouvez configurer des règles pour bloquer les requêtes API REST anonymes.

Avec Cloudflare :

  1. Allez dans Firewall Rules (Règles de pare-feu).
  2. Créez une nouvelle règle.
  3. Définissez une condition pour bloquer les requêtes contenant l’URL /wp-json/wp/v2/ et qui ne sont pas authentifiées.
  4. Activez la règle.

Si vous utilisez Sucuri pour protéger votre site WordPress, vous pouvez bloquer les requêtes API REST anonymes directement via l’interface de votre pare-feu. Cela permet d’empêcher les utilisateurs non authentifiés d’accéder aux données de votre site via l’API REST.

Si la configuration est bien en place, vous devriez voir un message d’erreur ou une redirection au lieu de la liste des utilisateurs.

  1. Accédez à votre tableau de bord Sucuri
    • Connectez-vous à votre compte Sucuri.
    • Allez dans l’onglet Firewall (Pare-feu Web).
  2. Ajoutez une règle de blocage pour l’API REST
    • Dans la section Security Settings (Paramètres de sécurité), recherchez « API REST Restrictions ».
    • Activez l’option qui bloque les requêtes API REST pour les utilisateurs non connectés.
    • Enregistrez les modifications.
  3. Vérifiez si le blocage fonctionne
    • Ouvrez un navigateur en mode navigation privée.
    • Essayez d’accéder à votre API REST avec cette URL :bashCopierModifierhttps://votre-site.com/wp-json/wp/v2/users

Si vous préférez une solution directe, vous pouvez ajouter un code dans le fichier functions.php de votre thème pour empêcher les utilisateurs non connectés d’accéder à l’API REST.

Ajoutez ce code dans le fichier functions.php de votre thème enfant ou dans le plugin de code snippet :

add_filter( 'rest_authentication_errors', function( $result ) {
if ( ! is_user_logged_in() ) {
return new WP_Error( 'rest_not_logged_in', 'Vous devez être connecté pour accéder à cette API.', array( 'status' => 401 ) );
}
return $result;
});

Explication du code :

  • Cette fonction vérifie si l’utilisateur est connecté avant d’autoriser l’accès à l’API REST.
  • Si l’utilisateur n’est pas connecté, une erreur est retournée et la requête est bloquée.
  • Les requêtes internes (faites par un administrateur ou un plugin légitime) continueront de fonctionner normalement.

Après avoir ajouté ce code, testez votre site en essayant d’accéder à l’URL suivante en navigation privée :

https://votre-site.com/wp-json/wp/v2/users

Si la protection est bien active, vous devriez voir un message d’erreur indiquant que l’accès est interdit.

L’API REST n’est pas la seule fonctionnalité potentiellement dangereuse. XML-RPC et les PINGBACKS sont également des cibles fréquentes pour les attaques.

XML-RPC est une ancienne fonctionnalité de WordPress qui permet de contrôler un site à distance via des requêtes. Elle est souvent exploitée par les pirates pour lancer des attaques par force brute sur les identifiants d’administrateur ou utiliser votre site pour envoyer des attaques DDoS via la fonction pingback.

Solution 1 : Utiliser un plugin

Le plugin Disable XML-RPC permet de désactiver XML-RPC en un clic. Il est simple à installer et efficace.

Solution 2 : Bloquer XML-RPC via .htaccess

Ajoutez ce code dans votre fichier .htaccess pour bloquer totalement XML-RPC :

<Files xmlrpc.php>
Order Deny,Allow
Deny from all
</Files>

Même si vous bloquez XML-RPC, il est recommandé de désactiver les pingbacks pour éviter que votre site soit utilisé dans des attaques DDoS.

Ajoutez ce code dans functions.php :

add_filter( 'xmlrpc_methods', function( $methods ) {
unset( $methods['pingback.ping'] );
return $methods;
});

Cela empêche les pirates d’utiliser votre site pour attaquer d’autres sites.

Les formulaires sont essentiels sur un site : contact, inscription, commande… Mais s’ils ne sont pas bien protégés, ils peuvent devenir une porte d’entrée pour les pirates et les spammeurs. Envoi de spam massif, injection de logiciels malveillants si un champ d’upload de fichiers est mal protégé, attaques XSS

Voici plusieurs méthodes pour empêcher les abus et renforcer la protection de vos formulaires :

Un CAPTCHA est un test qui vérifie si l’utilisateur est humain. Il empêche les robots d’envoyer du spam en masse. Par exemple :

  • reCAPTCHA de Google (cases à cocher, images à identifier).
  • hCaptcha (alternative à reCAPTCHA, plus axée sur la confidentialité).
  • CAPTCHA mathématique (demander un calcul simple, efficace et léger).

Exemple avec WPForms : Choisissez reCAPTCHA ou hCaptcha et suivez les instructions pour l’activer. Allez dans Paramètres > CAPTCHA.

Ne faites jamais confiance aux données saisies par les visiteurs.

  • Filtrez les entrées : N’autorisez que les formats corrects (ex : email valide, numéro de téléphone, etc.).
  • Bloquez les balises HTML et scripts : Évitez qu’un attaquant injecte du code malveillant.
  • Affichez des messages d’erreur clairs : Un champ mal rempli ne doit pas être validé.

Exemple avec Gravity Forms : Activez les règles de validation pour chaque champ (email, longueur minimale, etc.) puis utilisez des listes blanches pour limiter les formats autorisés.

Certains robots envoient des milliers de formulaires en quelques minutes.

  • Ajoutez une protection anti-spam avec Akismet.
  • Définissez un délai minimum entre deux soumissions.
  • Bloquez les adresses IP suspectes après trop de tentatives.

Avec WPForms par exemple : dans l’onglet Paramètres > Anti-spam, cochez Activer la protection anti-spam, ajoutez une limite de soumissions par utilisateur dans Form Locker.

Si votre formulaire permet d’envoyer des fichiers, soyez très prudent.

  • Autorisez uniquement certains formats (ex : JPG, PDF, DOC).
  • Limitez la taille des fichiers pour éviter les attaques par surcharge.
  • Stockez les fichiers dans un dossier sécurisé inaccessible aux visiteurs.

Je compte maintenir ce guide à jour et l’enrichir régulièrement avec les nouveautés en matière de sécurité. Je proposerais également bientôt une véritable checklist, à garder sous le coude et à reprendre de temps à autre. N’hésitez pas à me dire sous quelle forme vous aimeriez l’avoir ? Formulaire enligne avec diagnostique, PDF ou tableau Notion…

De votre coté, je vous conseille de programmer un checkup sécurité tous les 3 à 6 mois si vous travaillez seul sur le site et plus fréquemment si vous êtes plusieurs. En effet, les erreurs humaines sont souvent les pires : un collègue qui écrase une configuration sans faire attention, qui ajoute un plugin sans voir qu’il n’est plus maintenu… Vérifier régulièrement l’ensemble de la sécurité est un gage de sérénité future.

J’entend trop souvent « mon site est sécurisé, il est HTTPS ». Installer un certificat SSL est un bon début mais c’est très loin d’être suffisant. La sécurité de votre site WordPress repose sur une combinaison de bonnes pratiques, de plugins de sécurité et de vigilance continue.

La sécurité n’est pas un état mais un processus : restez vigilant, mettez à jour régulièrement votre site et surveillez les logs pour détecter toute activité suspecte.

Si sécuriser votre site WordPress vous semble trop complexe, si vous n’êtes pas à l’aise avec ces aspects techniques, n’hésitez pas à faire appel à un professionnel qui pourra à la fois mettre toutes les sécurités nécessaires pour prévenir et vous proposer un contrat de maintenance afin que vous n’ayez plus jamais à vous en occuper. Ca vous tente ?

Sécuriser votre site n’est qu’une des étapes dans l’optimisation de votre site : la vitesse de chargement et la conformité RGPD ne doivent pas non plus être négligés.

Pour aller au bout des optimisations WordPress, consultez l’excellent guide d’optimisation de Navire Digital.

Articles relatifs

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *