Sécuriser wp-config.php : failles de sécurité et renforcement de la sécurité de WordPress

Mention d'affiliation v3.1
Mention d'affiliation v3.2 (mobile)

Pendant que wp-config.php était ouvert dans vi, la copie d'échange (.swp) créée dans le même dossier s'est ouverte telle quelle à partir d'une adresse web. Nous l'avons constaté le 2026-09-13 sur ce site, et cette copie contenait le mot de passe de la base de données et toutes les clés de sécurité.

Pour sécuriser wp-config.php, passez en revue les six points ci-dessous dans l'ordre, de haut en bas.

1️⃣ Ce qui arrive si wp-config.php est exposé

wp-config.php contient le nom, l'utilisateur et le mot de passe de la base de données, ainsi que les 8 clés de sécurité qui chiffrent les cookies de connexion.

Fichier wp-config.php de WordPress

Si ce fichier est exposé, un attaquant peut se connecter directement à la base de données, ou falsifier des sessions de connexion avec les clés de sécurité et s'emparer des droits d'administration.

2️⃣ Limiter les droits du fichier à 600

WordPress règle généralement les dossiers à 755 et les fichiers à 644, mais wp-config.php se limite à 600, où seul le propriétaire peut lire et écrire. Voici la commande exécutée sur le site de test testpilotweb.com.

chmod 600 /home/testpilotweb/www/wp-config.php
stat -c '%a %U' /home/testpilotweb/www/wp-config.php
600 testpilotweb

Sur un serveur où PHP tourne sous un autre compte que le propriétaire du fichier, WordPress ne peut pas lire ce fichier en 600 et le site ne s'ouvre pas. Sur testpilotweb.com, PHP-FPM tourne sous le même compte que le propriétaire : le site s'est ouvert normalement après le changement.

Sur un hébergement mutualisé sans SSH, appliquez la même valeur dans le menu des droits d'un logiciel FTP ou du gestionnaire de fichiers cPanel.

3️⃣ Bloquer l'accès au niveau du serveur web

Si vous ne pouvez pas changer les droits ou si vous voulez une protection de plus, faites refuser par le serveur web toute requête vers wp-config.php.

🔲 Apache (.htaccess)

<Files wp-config.php>
    Require all denied
</Files>

Les lignes [order allow,deny] et [deny from all], fréquentes dans les anciens articles, sont la syntaxe d'Apache 2.2. Sous Apache 2.4, elles ne fonctionnent que si le module de compatibilité (mod_access_compat) est actif.

🔲 nginx

nginx ne lit pas .htaccess : on ajoute donc une règle [location] dans la configuration du serveur, et ce site renvoie aussi 403 de cette façon.

location ~* /wp-config(-sample)?\.php$ {
    deny all;
}

Échappez le point de l'expression régulière en [\.]. Si le point reste tel quel, même des adresses d'articles comme [/wp-config-php-reglages-de-base/] sont bloquées ; ce site a d'ailleurs déjà eu un article qui renvoyait 403 à cause de cette même erreur.

4️⃣ Bloquer les fichiers temporaires de l'éditeur et les sauvegardes

La copie [.swp] créée pendant qu'un fichier est ouvert dans vi et la copie [.bak] laissée avant une modification ne sont pas exécutées par PHP : elles sont envoyées telles quelles, en texte brut.

nginx coupe les deux types à la fois ; [444] est un code propre à nginx qui ferme la connexion sans réponse.

location ~ \.sw[opx]$ { return 444; }
location ~* (\.(bak|orig|old|save)|_ori|\.bak\.[0-9]+)$ { return 444; }

5️⃣ Le déplacer d'un niveau au-dessus de la racine web

WordPress cherche wp-config.php d'abord dans le dossier d'installation et, s'il n'y est pas, le charge depuis le dossier juste au-dessus. Si vous déplacez le fichier d'un niveau hors de [public_html], il n'est plus accessible par aucune adresse web.

Mais si le dossier du dessus contient le [wp-settings.php] d'une autre installation de WordPress, WordPress ne lira pas le wp-config.php de ce dossier. Après le déplacement, vérifiez tout de suite que le site et l'administration s'ouvrent.

6️⃣ Désactiver la modification des fichiers

Cette constante désactive les menus ‘Éditeur de fichiers des thèmes’ et ‘Éditeur de fichiers des extensions’ du tableau de bord WordPress. Même si un attaquant s'empare des droits d'administration, c'est l'une des défenses les plus efficaces pour l'empêcher d'injecter du code malveillant par le Web.

define('DISALLOW_FILE_EDIT', true);	

7️⃣ Supprimer wp-config-sample.php

wp-config-sample.php est un fichier d'exemple qui sert à l'installation : vous pouvez le supprimer une fois l'installation terminée. Il ne contient rien de sensible, mais les attaquants le cherchent à son chemin par défaut, il n'y a donc aucune raison de le garder.

Pour les vraies lignes du fichier d'exemple et le sens de chaque élément, voir l'article wp-config.php : réglages de base qui y est consacré. Si vous gardez le fichier, la partie [(-sample)?] de la règle nginx ci-dessus le bloque aussi.

WordPress Box

ℹ️ Mention d'affiliation
Le contenu de ce site contient des liens d'affiliation. Lorsqu'un visiteur achète un produit ou un service via l'un de ces liens, le site perçoit une commission du vendeur. Le montant payé par l'acheteur(il baisse lors des promotions ↓), lui, n'augmente pas. Les prix, remises et stocks indiqués correspondent à la date de rédaction et peuvent différer ; vérifiez-les donc auprès du vendeur avant d'acheter. Les produits sont choisis et évalués selon nos propres critères, et les commissions n'influencent ni l'ordre de présentation ni le contenu des évaluations.

Laisser un commentaire

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

Prouvez que vous êtes humain : 1   +   2   =