On m'a demandé il y a quelques jours s'il l'on pouvait désactiver l'option de renouvellement automatique d'un mot de passe dans WordPress.
Ne sachant ni comment faire, ni l'intérêt de faire une telle chose, je me suis penché sur la question. Et j'ai trouvé la réponse avec deux simples hacks.
Supprimer le renouvellement du Password WordPress
La première fonction à mettre en place est tout simplement de rendre impossible la demande de renouvellement pour l'ensemble de vos utilisateurs, vous y compris.
Dès que l'utilisateur demandera un nouveau mot de passe, un message lui indiquera que cela n'est pas possible. Pour cela, copiez-le code suivant dans le fichier functions.php de votre thème :
La deuxième étape consiste à supprimer les deux liens qui permettent d’accéder à cette fonctionnalité. Le premier lien pour le mot de passe oublié est situé sous le formulaire de login. Le second bouton de renouvellement de mot de passe est quant à lui situé dans le message d'erreur qui est affiché si l'utilisateur se trompe en entrant ses identifiants.
Si votre WordPress est en langue anglaise, utilisez le code suivant :
Si par contre votre blog utilise la langue de molière, faites plutôt appel à ce code PHP :
Le tour est joué. Il sera désormais impossible pour un utilisateur de votre blog WordPress de demander le renouvellement de son mot de passe, même en connaissant l'url qui active cette fonction.
Source d'origine pour le script : WordPress Support
Modifier les erreurs de login WordPress
On peut également choisir de remplacer le texte d'erreur affiché lors du login par un texte de son choix. Pour cela, un petit hack dans le fichier functions.php de votre thème WordPress fera l'affaire ;
Pensez juste à modifier le texte à afficher par le message d'erreur souhaité, comme par exemple :
"Désolé, mais il semblerait qu'une erreur soit apparue lors de votre connexion au blog WordPress"
Pourquoi supprimer le renouvellement d'un mot de passe
Au tout début, j'ai trouvé que le fait de désactiver cette fonction ne pouvait que nuire à un site, puisque c'est la méthode de secoure en cas de perte de son mot de passe. Ce n'est d'ailleurs par pour rien que le lien est intitulé ainsi :
Mot de passe oublié ?
Sauf qu'en y réfléchissant un peu plus longuement, j'ai trouvé de multiples intérêts à la chose. Tout d'abord, on réduira les problèmes de sécurité quand un utilisateur réussit à hacker notre boite email. Comme il ne peut demander le renouvellement du mot de passe, il ne pourra pas hacker notre site.
Ensuite, cela permet de gérer de manière plus drastique une communauté. Imaginons que vous avez créé un compte utilisateur pour avoir un deuxième rédacteur. Au bout de quelques mois, vous décidez de vous séparer de la dite personne, mais vous souhaitez conserver son historique, son compte et les articles qui y sont rattachés. Il ne reste plus qu'à modifier son password, puisque l'utilisateur ne pourra jamais demander le renouvellement de son mot de passe.
Libre à vous donc de faire appel ou non à ce hack WordPress. D'ailleurs, pour plus de sécurité avec le formulaire de login, je vous conseille l'excellent plugin Login Lockdown qui va bloquer une adresse IP si elle tente un trop grand nombre de fois de se loguer avec échec.
14 Commentaires
Bon article ! Pour ta deuxième remarque, si on décide de se séparer d'un rédacteur tout en gardant ses articles et son historique, il est à mon avis plus simple de modifier son role pour le rendre simple "subscriber" plutot que de changer son mot de passe. Non ?
Salut Daniel
Nice post ;o)
et félicitations
Pierre
@Jeremy : c'est aussi une solution, mais elle est (un peu) plus risquée, car un utilisateur niveau "subscriber" peut potentiellement exploiter plus de failles de sécurités (un peu comme les versions 3.0.4 et 3.0.5 de WordPress)
Article assez intéressant !
Pour ta 2eme remarque, une astuce serait, au lieu de changer le mot de passe, changer l'adresse mail de l'ancien rédacteur, ainsi, pas de problème ;)
C'est moi qui est fait cette demande.
Il s'agit tout simplement pour moi de gérer le mot de passe de mes abonnés pour que je puisse les gérer moi-même. Les abonnés sont inscrits pour élaborer un espace membre, hors ce membre peut-être une entreprise qui contient de nombreuses personnes. Ainsi, si un employé veut se connecter et qu'il n'a plus le mot de passe, il peut alors passer outre et le changer, son collègue qui n'est aps au courant se retrouve alors dans l'impossibilité de se connecter et va alors la même démarche... Vous comprenez donc alors mon intérêt? Est-ce judicieux? Merci en tout cas pour cet article je vais essayer de le comprendre à la hauteur de mes connaissances. merci encore
EDIT : une autre question : où dois-je intervenir pour réécrire le texte " ERROR: The password you entered for the username admin is incorrect. " afin de le mettre en français d'une part, et d'autre signifier que pour avoir le mot de passe il faut nous contacter.
En tout cas merci encore, votre solution fonctionne comme je l'espérais. Vive les échanges de compétences!
Le texte en anglais dépend de la configuration du blog. Il faut avoir définie la langue sur "Français". Pour cela, il faut éditer le fichier wp-config.php situé à la racine du site et y ajouer le texte suivant:
Hello !
Vraiment intéressant ton article, cela permet d'ajouter un niveau de sécurité supplémentaire à un blog mono-utilisateur, ce qui est mon cas.
Merci!
pour ta réponse au sujet de la langue ok, ce que je cherche à fermer c'est reformuler ce texte. Où dois-je intervenir?
Merci encore.
J'ai trouvé comment reformuler le texte d'erreur lors du login WordPress (que ce soit lors d'une erreur au niveau de l'identifiant ou du mot de passe utilisé). J'ai mis à jour l'article avec le hack correspondant. ;)
Merci! Je testerai cela demain!
Par contre, c'est étrange, lorsque que l'identifiant n'est pas correct il m'annonce un message d'erreur en français... "ERREUR : l’identifiant n’est pas valide. " et pur une erreur du mot de passe : "ERROR: The password you entered for the username david is incorrect. ", cela vient certainement de mon fichier de traduction, à voir... Mais une question me vient alors à l'esprit : ces deux phrases ne viennent pas de la même fonction quelle est celle pour modifier l'erreur sur l'identifiant?
Je ne connait pas le php, j'image que ce n'est pas trop dur, qu'il s'agit probablement de la même syntaxe, en changeant "login_errors" par le bon terme non?
Désolé pour mon incompétence en matière de langage...
Merci pour votre intérêt et vos partage de connaissance, c'est très généreux.
"Il ne reste plus qu'à modifier son password, puisque l'utilisateur ne pourra jamais demander le renouvellement de son mot de passe." ==> Ne suffirait-il pas de juste changer son email avec un email à toi ? Tout l'historique est conservé, pas de hack, et impossible pour lui de récupérer le mot de passe. En plus tu peux même savoir si il tente de récupérer son mot de passe puisque l'email arrive chez toi :)
Oui, c'est tout à fait possible.
Sauf que cela laisse toujours la possibilité de faire un attaque brute force sur le lien de renouvellement du mot de passe. Certes, si l'attaque fonctionne, l'email arriverait aussi chez soi, mais autant épargner cela à son serveur.
Salut,
Juste pour préciser que si ton login est relié a un annuaire LDAP. Je me vois mal autorisé les personnes à pouvoir récupérer (dans ce cas modifier) leur mot passe LDAP.
En tout cas merci pour ce tutos ! exellent :)
bonjour ravie de découvrir ce tuto , mais chez moi ça ne marche
est ce dû au fait que j'ai personnalisé ma page d’accueil?
merci
Laisser un commentaire