Et dire que je n'ai pas toujours présenté User Name Security, mon premier plugin de sécurité pour WordPress sorti en mars dernier.
Tout le monde le sait, la sécurité est toujours un élément à prendre en compte sur un site Internet. et pourtant, WordPress s'amuse à afficher un peu partout dans votre site votre login. User Name Security est donc là pour faire automatiquement le ménage.
Nous savons qui vous êtes
Quand vous créez un profil (ou que vous utilisez celui par défaut), WordPress va utiliser votre login et va l'afficher à plusieurs endroits de votre site, parfois de manière explicite, parfois caché dans le code source. Mais dans les deux cas, vous facilitez la tâche de celui qui va pirater votre site. Attention, je ne dis pas que cela lui permet directement de se connecter à votre base de donnée ou à l'administration de WordPress, mais disons que vous lui mâchez une partie du travail.
Par défaut, WordPress va donc afficher votre login à ces différentes endroits :
- dans le code source des pages auteurs, pour tous les thèmes qui utilisent la fonction body_class. Il affiche d'ailleurs également l'ID du compte concerné au passage.
- dans tous les endroits où vous afficher l'auteur de vos articles (sauf si vous avez eu le réflexe de changer manuellement le nom d'affichage de votre profil, mais ce n'est pas le cas dans 95% des cas).
- dans l'URL des pages des différents utilisateurs.
Bref, vous donnez accès à des données sensibles de manière très directe, et autant éviter cela.
WordPress et la vie privée des utilisateurs
Le plugin User Name Security va permettre justement de corriger de manière automatisée ces différents problèmes :
La fonction body_class
A la base, cette fonction à insérer dans la balise body permet d'ajouter des classes permettant de changer l'apparence de chaque type de contenu. Sur la page d'un auteur, d'un administrateur ou même d'un contributeur, WordPress va insérer dans cette balise l'identifiant de l'utilisateur ainsi que le nicename, c'est à dire une version simplifiée du login (sans espace, majuscule, caractères spéciaux ni accents).
Avec ces deux informations, vous donnez donc à tout pirate des indices pour avoir accès aux zones privées de votre site. Le plugin WordPress User Name Security va filtrer automatiquement la fonction body_class pour supprimer ces deux informations, ce qui devrait vous donner le rendu suivant :
User Name Security filtre la fonction Body_class
Les noms d'affichage et les surnoms
Là, cela se complique. Dans un profil utilisateur, il existe plusieurs champs à remplir :
- le login : vous ne pouvez pas le changer et c'est lui qui est utilisé lors de la création du compte
- Le prénom et le nom : ils sont utilisés pour compléter votre profil
- Le pseudonyme (appelé nickname en anglais) : par défaut, il est identique au login
- Le nom à afficher publiquement (appelé Display Name en anglais) : par défaut, il est identique au login
Le problème, c'est que toutes les fonctions qui récupèrent l'auteur d'un article vont utiliser le nom à afficher publiquement. Donc si l'utilisateur ne pense pas à le changer, WordPress l'utilise et affiche clairement le login de l'utilisateur concerné.
Le plugin va donc avoir un but très simple :
- à chaque création d'un nouvel utilisateur, le Display Name et le Nicename sont modifiés par une valeur aléatoire.
- à chaque fois qu'un utilisateur est connecté, le plugin vérifie que son Display Name et son Nicename sont bien différents du login. Si ce n'est pas le cas, il les modifie par une valeur aléatoire.
La valeur aléatoire utilisée est la suivante : Nouvel utilisateur XXX, où XXX est un chiffre aléatoire à 6 chiffres (et donc différent de l'identifiant). Et le tour est joué : vous n'affichez plus votre login sur votre site, ce qui vous permet donc de renforcer un peu la sécurité de votre WordPress.
User Name Security vous empêche d'utiliser le login dans les autres champs de l'utilisateur
L'URL des pages auteurs
Enfin, le dernier endroit où l'on peut encore voir les logins, c'est tout simplement l'URL des utilisateurs. Le plugin va donc automatiquement les filtrer lors de la création d'un nouveau profil, en ayant une valeur lambda du type profil-XXX, où XXX est là encore un nombre aléatoire.
Cette partie du plugin User Name Security ne fonctionnera que sur les futurs profils. J'aurais pu activer cette fonctionnalité pour les utilisateurs existants, mais cela provoquerait irrémédiablement des erreurs 404, et cela vous forcerait à faire des redirections manuelles.
Si vous voulez quand même le faire pour vos utilisateurs déjà existants, faites-le comme un grand avec le très bon plugin SF Author URL Control.
Le plugin User Name Security
Pour fonctionner, le plugin a juste besoin d'être activé. Une fois que cela est fait, vérifiez juste que vous avez bien modifié les noms d'affichages pour les différents rédacteurs de votre site.
Pour information, le plugin est compatible pour les versions française et anglaises de WordPress, et dispose de fichiers de langues si jamais vous voulez faire des traductions en espagnol, allemand ou autre. Voici la traduction actuellement mise en place :
- pour l'URL des nouveaux profils :
- EN : user-xxx
- FR : profil-xxx
- Pour le nom d'affichage et le surnom :
- EN : New user XXX
- FR : Nouvel utilisateur XXX
Vous trouverez le plugin directement sur le site officiel de WordPress : téléchargez User Name Security. Il vaut vraiment le détour pour renforcer la sécurité de votre site Internet.
Merci d'ailleurs à Julio Potier de BoiteAWeb pour son aide car il a simplifié en un éclair mon code.