Ouvrez le journal d'accès de n'importe quel site WordPress en ligne depuis plus de quelques jours et cherchez wp-login.php. Vous trouverez des centaines, souvent des milliers, d'entrées provenant d'adresses IP dont vous n'avez jamais entendu parler, toutes essayant des combinaisons courantes de nom d'utilisateur et de mot de passe. La page de connexion WordPress est l'un des points de terminaison les plus attaqués du web public, simplement parce que l'URL est universelle. Chaque site WordPress dans le monde sert le formulaire de connexion à /wp-login.php et /wp-admin. Cela permet aux botnets d'attaquer à grande échelle de manière triviale.
Déplacer l'URL de connexion vers une URL personnalisée ne résout pas le problème de fond (quelqu'un qui s'intéresse réellement à votre site spécifique trouvera la nouvelle URL de toute façon), mais cela retire le site des millions de listes automatisées qui scrutent et martèlent le point de terminaison par défaut. En pratique, cela réduit le trafic de connexion de 95 % ou plus, ce qui est un gain significatif rien que pour la charge serveur. Ce guide explique ce que ce changement accomplit réellement, les différentes façons de le mettre en œuvre, et les pièges à éviter.
Ce que change l'URL de connexion fait et ne fait pas
Il vaut la peine d'être précis, car le sujet est mal présenté dans les deux sens. Certains guides le survendent comme une défense complète, d'autres le rejettent comme du « security theater ». La position juste se situe entre les deux.
Ce que cela fait bien :
- Arrête les botnets automatisés qui ciblent directement
/wp-login.php. La grande majorité du trafic de force brute provient de scripts bêtes qui itèrent sur des listes de mots. Ils ne cherchent pas la nouvelle URL, car cela nécessiterait une vraie visite et une analyse HTML. - Vous retire des listes filtrées « WordPress login présent » que les scanners construisent pour trouver rapidement des cibles.
- Réduit considérablement la charge serveur et le bruit dans les journaux. Sur les sites à fort trafic, cela suffit déjà à justifier le changement.
- Réduit la visibilité accidentelle de l'administration. La page de connexion fuit simplement par son existence : messages d'erreur, favicon, logo WordPress, version du modèle de connexion. Cacher l'URL cache tout cela.
Ce que cela ne fait pas :
- Arrêter un attaquant déterminé qui cible spécifiquement votre site. Il trouvera la nouvelle URL via l'un des moyens suivants : la redirection de connexion qui se produit après la déconnexion, l'e-mail de réinitialisation de mot de passe qui pointe vers la nouvelle URL, le chemin du cookie, un lien divulgué dans votre CMS, ou simplement en devinant des slugs courants.
- Remplacer des mots de passe forts ou l'authentification à deux facteurs. L'URL de connexion est une couche devant l'authentification réelle. La vraie défense reste ce qui se trouve sur le formulaire, pas où vit le formulaire.
- Protéger contre les vulnérabilités au niveau applicatif. Si une extension a un bug d'exécution de code à distance, l'URL de connexion est sans importance.
La position pragmatique : changer l'URL de connexion est un changement à fort retour, à faible effort, qui adresse une catégorie spécifique d'attaque (force brute automatisée non ciblée). Il se combine bien avec des mots de passe forts, le 2FA et un limiteur de débit, mais ne remplace aucun d'eux.
La méthode recommandée : WPS Hide Login (ou équivalent)
Pour 95 % des sites, la solution la plus propre est l'extension gratuite WPS Hide Login. Elle est petite (moins de 100 Ko), maintenue activement depuis des années, possède plus d'un million d'installations actives, et fait exactement une chose : elle change le slug de l'URL de connexion. Pas d'incitations à l'achat, pas de panneau de paramètres encombré de fonctionnalités sans rapport.
L'installation prend une minute :
- Installez WPS Hide Login depuis le répertoire des extensions.
- Activez-la.
- Allez dans Réglages, WPS Hide Login.
- Saisissez votre nouveau slug dans le champ « Login URL ». Exemples :
ma-connexion-secrete,backstage,access-2347. Évitez les choix évidents commeadmin,secret,login, votre nom de domaine avec un chiffre ajouté, etc. - Définissez éventuellement une « Redirection URL » pour les visites de l'ancien
/wp-login.php. Le comportement par défaut renvoie un 404, ce qui est exactement ce que vous voulez face aux scanners. Une redirection personnalisée vers la page d'accueil convient également. - Enregistrez.
À partir de ce moment, https://votredomaine.com/wp-login.php renvoie un 404 aux visiteurs externes, et vous vous connectez via https://votredomaine.com/ma-connexion-secrete. Mettez la nouvelle URL en favori immédiatement. L'extension ne stocke le slug nulle part de visible depuis l'extérieur, donc si vous oubliez l'URL et que vous n'avez pas d'accès FTP, vous avez un problème (bien qu'un chemin de récupération soit décrit ci-dessous).
Alternative : un slug personnalisé sans extension
Si vous préférez ne pas ajouter une nouvelle extension, vous pouvez implémenter le même effet en code. Déposez ceci dans une must-use plugin sous wp-content/mu-plugins/custom-login-url.php :
<?php
/**
* Plugin Name: Custom Login URL
* Description: Cache /wp-login.php derrière un slug personnalisé.
*/
if (!defined('ABSPATH')) {
exit;
}
const CUSTOM_LOGIN_SLUG = 'ma-connexion-secrete';
add_action('init', function () {
$requestUri = isset($_SERVER['REQUEST_URI']) ? (string) $_SERVER['REQUEST_URI'] : ';
$path = parse_url($requestUri, PHP_URL_PATH) ?? ';
$path = trim($path, '/');
// Autoriser l'accès via le slug personnalisé en servant wp-login.php
if ($path === CUSTOM_LOGIN_SLUG) {
require_once ABSPATH . 'wp-login.php';
exit;
}
// Bloquer l'accès direct à l'URL de connexion par défaut
if (preg_match('#(^|/)wp-login\.php$#', $path)) {
status_header(404);
nocache_headers();
include get_404_template();
exit;
}
});
// Réécrire l'URL dans les e-mails et les redirections de connexion
add_filter('site_url', function ($url, $path) {
if (str_contains((string) $path, 'wp-login.php')) {
return str_replace('wp-login.php', CUSTOM_LOGIN_SLUG, $url);
}
return $url;
}, 10, 2);
add_filter('wp_redirect', function ($location) {
return str_replace('wp-login.php', CUSTOM_LOGIN_SLUG, $location);
});L'avantage de cette approche est un contrôle total et zéro dépendance d'extension. L'inconvénient est que vous devez la maintenir vous-même, et que les cas particuliers (multisite, flux d'inscription personnalisés, certains page builders qui utilisent le formulaire de connexion) demandent une gestion supplémentaire. Pour la plupart des sites, WPS Hide Login est sincèrement la réponse la plus pragmatique.
Choisir un bon slug
Le slug doit seulement être non évident, pas cryptographiquement secret. Quelques règles :
- Évitez les variantes courantes de « login », « admin » ou « wp ». Les scanners qui vont au-delà de
/wp-login.phpont typiquement une liste :/login,/admin,/secure-login,/wp-secret,/backend,/dashboard. Choisissez quelque chose qui n'est pas dans cette liste. - Choisissez quelque chose de mémorable pour vous, pas aléatoire. Un slug que vous pouvez taper de mémoire suffit.
mon-chat-tofuest bien meilleur quek7Hg2P, parce que ce dernier vous le stockerez dans un gestionnaire de mots de passe et que le premier vous ne l'oublierez pas. - N'incluez pas le domaine ou le nom de l'entreprise.
example-loginsurexample.comest la première chose qu'un attaquant ciblé essaiera. - Minuscules, pas de caractères spéciaux. Les URL sont techniquement sensibles à la casse, mais les vrais utilisateurs se trompent tout le temps de casse. Un slug en minuscules évite toute cette catégorie de tickets « je n'arrive pas à me connecter ».
Pièges courants et cas particuliers
Une poignée de choses se cassent ou se comportent de manière inattendue lorsque vous déplacez l'URL de connexion. Cela vaut la peine de le savoir d'avance.
- Page « Mon compte » de WooCommerce. La connexion client sur
/mon-compte/est un flux séparé et n'est pas affectée par le changement. Vous ne masquez que la connexion à l'administration. Les clients WooCommerce continuent à se connecter normalement. - Extensions d'authentification à deux facteurs. La plupart des grandes extensions 2FA (Wordfence, WP 2FA, miniOrange, etc.) fonctionnent très bien avec WPS Hide Login. Elles s'accrochent au processus de connexion à un niveau inférieur à l'URL et ne se soucient pas de l'endroit où vit le formulaire. Testez une fois après l'activation.
- REST API et XML-RPC. Le changement d'URL de connexion n'affecte pas
/wp-json/ni/xmlrpc.php. Si vous avez des applications qui s'authentifient contre ces points de terminaison, elles continuent à fonctionner comme avant. Si vous n'utilisez pas activement XML-RPC, c'est un bon moment pour le désactiver entièrement (guide séparé dans notre base de connaissances). - Extensions de cache. Certains caches de page agressifs (LiteSpeed Cache avec edge caching, Cloudflare APO) peuvent mettre en cache la nouvelle URL de connexion ou, pire, mettre en cache une réponse d'administrateur connecté et la servir aux visiteurs déconnectés. Après le changement, visitez la nouvelle URL dans une fenêtre privée. Si vous voyez une vue d'administrateur connecté, le cache est cassé ; videz-le et ajoutez le slug à la liste d'exclusion du cache.
- E-mails de réinitialisation de mot de passe. WPS Hide Login et l'extrait de code ci-dessus réécrivent automatiquement l'URL de réinitialisation de mot de passe, mais les extensions d'e-mails personnalisés ou les intégrations d'e-mails transactionnels codent parfois en dur
wp-login.phpdans leurs modèles. Envoyez-vous une réinitialisation de mot de passe de test après le changement. - Installations en sous-répertoire et multisite. Les deux fonctionnent, mais surveillez le slug qui s'ajoute à la mauvaise URL de base. Si WordPress est dans
/blog/, la nouvelle URL esthttps://votredomaine.com/blog/ma-connexion-secrete, pashttps://votredomaine.com/ma-connexion-secrete.
Récupération : que faire si vous vous verrouillez dehors
Cela arrive. Vous configurez le slug, vous vous déconnectez, fermez l'onglet, et une semaine plus tard vous ne vous souvenez plus si vous avez utilisé des tirets, des underscores, ou quel était le troisième mot. Vous n'êtes pas bloqué, mais le chemin de récupération dépend de la méthode utilisée.
Si vous avez utilisé WPS Hide Login : désactivez l'extension via SFTP. Soit renommez le dossier wp-content/plugins/wps-hide-login en wps-hide-login.disabled, soit supprimez-le entièrement. L'URL /wp-login.php par défaut revient immédiatement. Connectez-vous, retrouvez votre slug dans les paramètres de l'extension, puis réactivez l'extension. Ou alternativement, regardez directement dans la base de données WordPress : le slug est stocké dans la table wp_options sous la clé whl_page.
Si vous avez utilisé le code personnalisé : connectez-vous en SFTP dans wp-content/mu-plugins/, ouvrez le fichier, lisez le slug depuis la constante CUSTOM_LOGIN_SLUG. Ou renommez temporairement le fichier pour le désactiver, connectez-vous, puis remettez-le en place.
Dans les deux cas, notez l'URL quelque part de durable au moment où vous la configurez. Gestionnaire de mots de passe, documentation projet, n'importe quoi qui survive à la perte d'un favori de navigateur.
Comment vérifier que le changement est actif
- Ouvrez
https://votredomaine.com/wp-login.phpdans une fenêtre de navigation privée. Résultat attendu : une page 404. - Même vérification pour
https://votredomaine.com/wp-admin/. Devrait également rediriger vers le 404, pas vers le formulaire de connexion. - Ouvrez la nouvelle URL
https://votredomaine.com/ma-connexion-secrete. Devrait afficher le formulaire de connexion WordPress standard. - Connectez-vous normalement, déconnectez-vous, cliquez sur le lien « Se déconnecter ». La redirection devrait atterrir sur la nouvelle URL, pas sur
/wp-login.php. - Déclenchez une réinitialisation de mot de passe pour vous-même. Le lien dans l'e-mail devrait pointer vers la nouvelle URL.
- Lancez une nouvelle analyse InspectWP. Les vérifications liées à l'URL de connexion devraient refléter le nouvel état.
Une fois vérifié, la seule maintenance continue consiste à s'assurer que l'extension (ou votre code personnalisé) continue de fonctionner à travers les mises à jour du cœur de WordPress, ce qui devrait être le cas. Si une mise à jour majeure modifie un jour le fonctionnement interne du flux de connexion, WPS Hide Login est l'une des premières extensions à publier un correctif, généralement en quelques jours.
Tout le changement représente une demi-heure de travail pour une réduction permanente de la surface d'attaque et une baisse notable de la charge serveur. Il n'y a aucune bonne raison de laisser la connexion WordPress à son emplacement par défaut sur un site de production.