Comment sécuriser son site avec le fichier wp-config.php?

Publié le 
5 janvier 2021

Un des fichiers les plus importants de votre installation de WordPress est le fichier de configuration wp-config.php. Ce fichier est situé le répertoire de base de WordPress et contient les principales directives de configuration de votre site (constantes et des instructions PHP), comme les informations de connexion à la base de données 

Toute la documentation sur ce fichier est disponible sur le site de WordPress , et en Anglais.

Les paramètres du fichier wp-config.php


Quand tu installes manuellement WordPress, on te demande d’entrer les informations requises comme les détails de la base de données et le préfixe de la table. il te sera demandé d’entrer certaines des données les plus pertinentes stockées dans le wp-config : Database Name, Username, Password, Database Host, Table Prefix.

En règle générale, le fichier wp-config.php est généré automatiquement quand tu exécutes les programme d'installation de WordPress. 

La toute première chose à faire est de mettre les permissions 644 sur le fichier wp-config.php. 

IMPORTANT : les constantes et les instructions PHP viennent dans un ordre spécifique que tu ne dois jamais changer. Pour ajouter du contenu (les snipets), fais-le sous la ligne de commentaire suivante :

/* That's all, stop editing! Happy blogging. */

1. Déplace wp-config.php

Par défaut, le fichier wp-config.php est installé à la racine de l'installation de ton site sur ton serveur. Il est conseillé de déplacer le répertoire directement au-dessus du répertoire de l'application WordPress (en général au-dessus du /www) . En effet, WordPress recherche « wp-config.php » dans la racine de l’installation, et s’il ne le trouve pas, il recherche un niveau au dessus. 

2. Modification du système de fichiers

Le système de fichiers de WordPress est bien connu des hackers. Pour cette raison, tu dois envisager de modifier la structure de fichiers intégrée en déplaçant des dossiers spécifiques dans des emplacements arbitraires et en définissant les URLs et chemins correspondants dans le fichier wp-config.php.Tout d’abord, nous pouvons déplacer le dossier /wp-content en définissant deux constantes.

La première constante définit le chemin complet du répertoire

define( 'WP_CONTENT_DIR', dirname(__FILE__) . '/site/wp-content' );
La seconde constante définit la nouvelle URL du répertoire :
define( 'WP_CONTENT_URL', 'http://example.com/site/wp-content' );
Tu peux déplacer uniquement le dossier /plugins en définissant les constantes suivantes:
define( 'WP_PLUGIN_DIR', dirname(__FILE__) . '/wp-content/mydir/plugins' ); define( 'WP_PLUGIN_URL', 'http://example.com/wp-content/mydir/plugins' );
De même, tu peux déplacer le dossier /uploads, en définissant le nouveau chemin du répertoire :
define( 'UPLOADS', 'wp-content/mydir/uploads' );
IMPORTANT : Tous les chemins sont relatifs à ABSPATH, et ils ne doivent pas contenir de barre oblique. De plus, il n'est pas possible de déplacer le dossier /wp-content/themes depuis le fichier wp-config.php

3. Activation du cache

La constante "WP_CACHE" mise sur TRUE inclut le script /wp-content/advanced-cache.php. Cette constante n’a d’effet que si tu installes un plugin de cache persistant (W3 Total Cache, WP Rocket, etc.), qui la créé dans ton fichier wp-config.php.

define( 'WP_CACHE', true );

4. Mode de débogage

Si tu as besoin de forcer WordPress à afficher les erreurs et les avertissements, pour le débogage de thème ou de plugins, active le mode débogage en passant la valeur WP_DEBUG à "TRUE". Par contre lorque tu as ton site en production, repasse la valeur à "FALSE", pour pas que tes lecteurs voient les message d'erreur ;-)
define( 'WP_DEBUG', true );
Pour connaître les erreurs sans qu'elles soient affichées sur ton site, tu peux forcer WordPress à conserver en mémoire ces messages dans le fichier debug.log, placé dans le dossier /wp-content.
define( 'WP_DEBUG', true ); define( 'WP_DEBUG_LOG', true ); define( 'WP_DEBUG_DISPLAY', false ); @ini_set( 'display_errors', 0 );
Pour que cette fonctionnalité fonctionne, tu dois d’abord activer le mode de débogage. Ensuite, en définissant WP_DEBUG_LOG à "TRUE", tu forces WordPress à stocker les messages dans le fichier debug.log. De plus, en définissant WP_DEBUG_DISPLAY à "FALSE" tu le caches les erreurs à l’écran. Enfin, en mettant à 0 la valeur de la variable PHP DISPLAY_ERRORS pour que les messages d’erreur ne soient pas affichés à l’écran. Le fichier wp-config.php n’est jamais chargé depuis le cache. Ainsi, c’est un très bon endroit pour remplacer les paramètres du fichier php.ini.

5. Enregistrement automatique

Délai

Par défaut, WordPress enregistre automatiquement les révisions de tes articles toutes les 60 secondes. Tu peux modifier le temps, ici par exemple, toutes les 180 secondes :
define( 'AUTOSAVE_INTERVAL', 180 );

Nombre de révisions

Au fur et à mesure que ton site grandira, les révisions s'accumuleront, et cela prendra de la place inutilement sur sont serveur. Pour désactiver les révisions d'articles, définit la constante suivante :
define( 'WP_POST_REVISIONS', false );
Si tu souhaites limiter le nombre de révisions de tes articles WordPress, remplace par cette ligne suivante :
define( 'WP_POST_REVISIONS', 5);
Par défaut, la corbeille de tes articles, pages, pièces-jointes et commentaires reste dans la poubelle 30 jours, tu peux forcer ce délai à 14 jours par exemple :
define( 'EMPTY_TRASH-DAYS', 14 );

6. Taille de la mémoire allouée

Parfois tu pourrais rencontrer e message bien flippant "Fatal error: Allowed memory size of xxx bytes exhasuted...". Pas de panique, modifie la taille de la mémoire de PHP allouée par ici :
define( 'WP_MEMORY_LIMIT', '128M' );
Si nécessaire, tu peux également définir une limite de mémoire maximale avec l’instruction suivante :
define( 'WP_MAX_MEMORY_LIMIT', '256M' );

7. Mises à jour automatiques

Depuis sa version 3.7, WordPress supporte les mises à jours automatiques. Pour désactiver toutes les MAJ automatiques mineures, définit la constante suivante :
define( 'AUTOMATIC_UPDATER_DISABLED', true );
Par défaut, les mises à jour automatiques ne fonctionnent pas avec les versions majeures (la valeur par défaut est : 'WP_AUTO_UPDATE_CORE', 'minor'), mais vous pouvez activer toute mise à jour du cœur en définissant la constante WP_AUTO_UPDATE_CORE ainsi :
# Désactive toutes les mises à jour du Coeur : define( 'WP_AUTO_UPDATE_CORE', false ); # Active les mises À jour du coeur, mineures et majeures : define( 'WP_AUTO_UPDATE_CORE', true );

8. Renommer le préfixe de la table 

D'office lors de l'installation de WordPress, le préfixe par défaut du nom de la table de BDD de WordPress est 'WP_". 

Pour la modifier, ouvre ton fichier wp-config.php, place-toi à cette ligne :

$table_prefix = 'wp_';

Et modifie, le préfixe "WP" par "nouveauPrefixe", par exemple.

$table_prefix = 'nouveauPrefixe';

9. Sécurise tes clés de sécurité et tes clés SALT

Pour résumer, une clé secrète est un mot de passe avec des éléments qui le rendent plus dur à traverser tes barrières de sécurité : c'est pour schématiser, comme un double mot-de-passe ;-) Un mot de passe comme «admin » est simple et facile à casser. Une combinaison imprévisible tel que « er4g54gerg4reg48g8erg4re894e481er» prend plusieurs années pour le cracker. Ces clés secrètes auront pour effet de crypter les cookies utilisateur (pour te connecter) et de renforcer ainsi le niveau de sécurité de votre mot de passe.

Quand tu te connectes, tu saisis ton identifiant et ton mot de passe. Ensuite, WordPress stocke ces informations dans deux cookies de navigateur  (plutôt que d’utiliser des sessions PHP.) pour que tu puisses rester connecté. Ces informations sont également stockées dans la BDD de ton site WordPress.

Les clés secrètes et les clés Salt WordPress de sécurité évitent que ton mot de passe soit stocké en texte clair,  en travaillant ensemble pour crypter ce mot de passe en clair et le transformer en un mélange aléatoire de caractères impossibles à inverser sans avoir accès à tes clés et Salt.

Autrement dit elles sont des variables qui stockent tes informations d’identification de connexion sous une forme cryptée.  

Il y a deux sortes de clés: 

  • les clés de sécurité : AUTH_KEY , SECURE_AUTH_KEY , LOGGED_IN_KEY et NONCE_KEY,
  • les clés Salt WordPress : AUTH_SALT , SECURE_AUTH_SALT , LOGGED_IN_SALT et NONCE_SALT

Il est conseillé de les modifier tous les 3/6 mois.  Pour cela tu peux soit éditer tes clés et Salt , toi même, soit utiliser directement le générateur de clés que propose WordPress. Puis, colle-les dans ton fichier wp-config.php, à la place des anciennes.

Les céls de sécurité (AUTH_KEY et SALT) peuvent être modifiées à tout moment. La seule contrepartie est que cela  déconnectera tous les utilisateurs. 

Sécuriser ton fichier wp-config.php


Après avoir mifié le fichier wp-config.php, il te faudra renommer toutes les tables de la BDD. Pour cela va dans PhpMyAdmin (le mot de passe est dans ton fichier wp-config.php d'ailleurs juste après 'DB_PASSWORD'). Tout d'abord, sélectionne toutes les tables de ton site ("tout cocher"), puis choisis dans le menu déroulant, juste à droite, "remplacer le préfixe de table".

À cette étape, remplace l'ancien préfixe (FROM = "WP_") par ton nouveau préfixe (TO = "nouveauPrefixe_"), et enfin, valide ("continue"). 

Par ce changement de préfixe de la base de données de ton WordPress, les hackers n'auront pas son nom. 

1. Force wp-admin à utiliser HTTPS

Avec ton certificat de sécurité, tu peux forcer WordPress à utiliser SSL sur n’importe quelle session de connexion et d’administration. Parfait pour te connecter à ton administration WordPress et l'utiliser, en toute sécurité : toutes les informations seront cryptées grâce à la constante "FORCE_SSL_ADMIN", mais aussi pour tes clients qui se loguent à ton site (principalement en WooCommerce) via la constante "FORCE_SSL_LOGIN".
define( 'FORCE_SSL_ADMIN', true ); define( 'FORCE_SSL_LOGIN', true);

2. Désactive l'éditeur de fichiers de thèmes de  WordPress

Par défaut Wordpress donne la possibilité d'éditer ses fichiers PHP via un éditeur qui modifie les fichiers de thèmes (dans tableau de bord/apparences/éditeur de thèmes). Pour éviter que quelqu'un l'utilise à ton insu ou bien que tu y fasses une erreur, mieux vaut le désactiver, et n'effectuer les modifications qu'uniquement via ton FTP.
define('DISALLOW_FILE_EDIT', true);
Proudly designed with Oxygen, the world's best visual website design software
chevron-up-circle
linkedin facebook pinterest youtube rss twitter instagram facebook-blank rss-blank linkedin-blank pinterest youtube twitter instagram