Comment empêcher l’énumération des utilisateurs et masquer les identifiants sur WordPress ?
Par Eureka Studio · Mis à jour le
En bref
WordPress affiche les identifiants à quatre endroits publics : le point d’accès REST /wp-json/wp/v2/users, les redirections ?author=1, les URL des archives d’auteur et le plan du site natif des utilisateurs. Pour les masquer, bloquez la liste REST pour les visiteurs déconnectés, stoppez les scans ?author=, supprimez le plan du site des utilisateurs et uniformisez les messages d’erreur de connexion. Une extension peut faire les quatre ; testez ensuite chacun d’eux.
Étapes
1Étape 1
Voyez ce que WordPress affiche aujourd’hui
Rendez-vous sur yoursite.com/wp-json/wp/v2/users en étant déconnecté. Sur une installation par défaut, vous obtenez une liste JSON avec l’identifiant de connexion de chaque auteur dans le champ slug.
2Étape 2
Essayez le scan des auteurs
Rendez-vous maintenant sur yoursite.com/?author=1. WordPress redirige vers /author/votre-identifiant/, ce qui affiche le nom dans la barre d’adresse. Les robots comptent 1, 2, 3 pour collecter tous les utilisateurs.
3Étape 3
Fermez les quatre endroits
Ouvrez Hushfort → Durcissement de surface et activez-le. Laissez activés Liste des utilisateurs REST, Scan des auteurs (« Bloquer les scans ?author=1 »), Liste des auteurs du plan du site et Infos d’auteur oEmbed, puis enregistrez.
4Étape 4
Testez à nouveau depuis une fenêtre privée
Refaites les mêmes requêtes en étant déconnecté. La liste des utilisateurs répond désormais « rest_no_route » avec une erreur 404, et ?author=1 ne redirige plus vers un identifiant.
Pourquoi c’est important
Pour se connecter, un attaquant a besoin de deux choses : un identifiant et un mot de passe. WordPress, tel qu’il est livré, fournit la première moitié. Ce n’est pas un bug ; chaque endroit a sa raison d’être (flux pour les applications, URL d’auteur lisibles, moteurs de recherche). Mais ensemble, ils permettent à n’importe quel robot de dresser en quelques secondes la liste de tous les identifiants de connexion de votre site.
Masquer les identifiants ne rend pas un mot de passe faible sûr. Cela supprime en revanche la moitié facile du puzzle : chaque tentative doit alors deviner à la fois un nom et un mot de passe. Associé aux limites de connexion et à la double authentification, cela fait passer la devinette de lente à sans espoir.
Les quatre endroits où WordPress publie les identifiants :
- API REST —
/wp-json/wp/v2/usersliste les auteurs avec leur slug, qui correspond généralement à leur identifiant de connexion. - Scans des auteurs —
/?author=1redirige vers/author/login-name/. - Archives d’auteur — l’URL de l’archive contient elle-même le slug de l’auteur.
- Plan du site natif —
/wp-sitemap-users-1.xmlliste les URL des archives d’auteur. Les réponses oEmbed peuvent aussi inclure des informations sur l’auteur.
Erreurs courantes
- Corriger un seul endroit et s’arrêter là. Fermer
?author=en laissant la liste REST ouverte ne change rien pour un robot. Vérifiez les quatre. - Un nom affiché identique à l’identifiant de connexion. Même avec toutes les fuites fermées, un thème qui affiche « Publié par admin » trahit le nom. Définissez un nom affiché différent dans Comptes → Profil.
- Casser les vraies pages d’auteur. Sur un blog à plusieurs auteurs, les archives d’auteur sont utiles. Bloquez les scans par numéro plutôt que les archives elles-mêmes.
- Des erreurs de connexion trop détaillées. « Le mot de passe que vous avez saisi pour l’identifiant jane est incorrect » confirme que le nom existe. Utilisez un seul message pour les deux cas.
Sans extension
Vous pouvez couvrir l’essentiel avec une extension indispensable (must-use) (wp-content/mu-plugins/hide-users.php) :
<?php
// 1. REST user list: logged-out visitors get nothing.
add_filter( 'rest_endpoints', function ( $endpoints ) {
if ( ! is_user_logged_in() ) {
unset( $endpoints['/wp/v2/users'], $endpoints['/wp/v2/users/(?P<id>[\d]+)'] );
}
return $endpoints;
} );
// 2. ?author=N scans: stop the redirect that reveals the name.
add_action( 'template_redirect', function () {
if ( isset( $_GET['author'] ) && ! is_admin() ) {
wp_safe_redirect( home_url( '/' ), 301 );
exit;
}
} );
// 3. Core sitemap: drop the users provider.
add_filter( 'wp_sitemaps_add_provider', function ( $provider, $name ) {
return 'users' === $name ? false : $provider;
}, 10, 2 );
// 4. Same message for wrong username and wrong password.
add_filter( 'login_errors', function () {
return 'The username or password is incorrect.';
} );
Mises en garde : testez d’abord sur un site de préproduction, car les thèmes et les extensions lisent parfois la liste des utilisateurs REST. Cela ne modifie pas le slug d’auteur dans les URL des archives ; pour cela, changez le nicename de chaque auteur ou utilisez une extension de gestion du nom affiché. Et c’est un fichier de plus à ne pas oublier lorsque vous déplacez ou reconstruisez le site.
En cas de problème
- Une intégration a perdu sa liste d’auteurs. Certains outils externes lisent
/wp/v2/userssans se connecter. Donnez-leur un mot de passe d’application pour qu’ils s’authentifient, ou autorisez de nouveau la liste. - Les pages d’auteur affichent une erreur 404. Vous avez choisi de désactiver complètement les archives d’auteur. Passez à l’option qui bloque uniquement les scans par numéro.
- L’extension SEO liste toujours les auteurs. Beaucoup d’extensions SEO génèrent leur propre plan du site des auteurs. Désactivez aussi les plans du site des auteurs dans cette extension.
Avec Hushfort
Le Bouclier des identifiants fait partie de Hushfort Pro. L’Analyse de surface, qui montre ce qui fuit encore, est incluse dans Hushfort Security, l’extension de sécurité WordPress gratuite.
Le Bouclier des identifiants, qui fait partie de la couche Durcissement de surface de Hushfort, ferme les quatre endroits depuis un seul écran :
- il bloque la liste REST
/wp/v2/userspour les visiteurs non connectés, - il bloque les scans
?author=Ntout en conservant les archives/author/name/(ou désactive complètement les archives, si vous préférez), - il supprime le plan du site natif des utilisateurs et les informations d’auteur des réponses oEmbed,
- il rend les messages d’erreur de connexion identiques pour un identifiant erroné et un mot de passe erroné.
Ensuite, l’Analyse de surface teste chaque endroit avec de vraies requêtes et nomme chaque identifiant qui fuite encore.
Questions fréquentes
Qu’est-ce que l’énumération des utilisateurs sur WordPress ?
Est-ce un risque de sécurité si mon identifiant est visible ?
Bloquer la liste des utilisateurs REST va-t-il casser l’éditeur ?
Puis-je conserver les pages d’archives d’auteur ?
Pourquoi les messages d’erreur de connexion ont-ils de l’importance ?
Guides associés
Comment vérifier la sécurité de mon site WordPress et ce qu’il expose ?
Testez la sécurité de votre site WordPress comme un robot : cinq requêtes montrent si la connexion, XML-RPC et vos identifiants sont exposés.
Voir les étapesQu’est-ce que xmlrpc.php, et comment désactiver XML-RPC sur WordPress ?
Désactivez XML-RPC sur WordPress : xmlrpc.php est une seconde porte de connexion que masquer la connexion ne ferme pas. Gardez les pingbacks, puis testez.
Voir les étapesComment limiter les tentatives de connexion sur WordPress ?
Limitez les tentatives de connexion WordPress pour stopper la force brute : bloquez une IP après quelques échecs. Bons réglages, code manuel, failles.
Voir les étapes



