[PluXml 5.8] Récupération de mot de passe

P3terP3ter Responsable de PluXml
Bonjour à tous,

Je vous propose de tester et de me faire vos retours sur une nouvelle fonctionnalité de la prochaine version de PluXml : la récupération de mot de passe.

4jqkWI5T4W81.png

La solution que j'ai implémenté utilise la fonction mail() de php pour envoyer un nouveau mot de passe à l'utilisateur. Ça implique que votre hébergeur autorise et soit paramétré de tel sorte que l'envoi de mail soit possible.

Pour les besoins du test, j'ai mis à disposition une version 5.8 de PluXml sur Github.

Télécharger PluXml 5.8 alpha 1 (feature/lostpassword)

Le mail est construit à partir d'un template visible ici. Une option permet d'activer ou de désactiver cette fonctionnalité, depuis l'écran "Configuration avancée" (activé par défaut).

Il s'agit là d'un premier lot. Il y a encore plein d'améliorations possibles pour cette fonctionnalité.

Réponses

  • +1

    Je teste un peu plus tard

    Notre temps est la seule monnaie vraie ;)

  • bazooka07bazooka07 Membres
    13 mars modifié
    Tout d'abord, même si cela n'a rien à voir avec le sujet, j'ai la désagréable sensation de lire un message d'erreur dans les logs de Apache :
    [== tail -f /var/log/apache/test-error.log  ==]
    PHP Deprecated:  Function create_function() is deprecated in /home/www/test/PluXml-2019/core/admin/medias.php on line 93, referer: https://test.lan/PluXml-2019/core/admin/
    
    Je fais mes tests sous "Ubuntu 18.04.2 LTS" et c'est donc PHP 7.2. Et pas de chance la fonction create_function() est obsolète maintenant :
    http://php.net/manual/fr/function.create-function.php
    Donc à bannir de façon définitive
    Fin de l'aparté.

    L'idée est généreuse et pallie à un manque de PluXml que j'ai remplacé depuis longtemps avec mon vieux plugin lostpassword publié en 2014.

    AMHA, à l'installation, il faudrait rendre obligatoire l'adresse mail pour l'administrateur. Au moins pour lui envoyer des messages d'alerte.

    Pour trouver une adresse mail ou un login, les essais sont quasi illimités : un grand compteur, pas de temps de réponse qui s'allonge. Donc, vive l'attaque par force brute.

    Pour ceux qui ont la patience de faire 100 tentatives en 3 minutes et se retrouvent bannis. Pas de souci : effacer tous les cookies de votre site, hyper facile avec Firefox, et c'est "same player shoots again" comme en haut des flippers. ]:D

    Pour éviter cela, c'est sur le serveur qu'il faut enregistrer le compteur pour une adresse IP donnée et pas demander au méchant qui toque à la porte de tenir à jour le compteur d'essais.

    Mon plugin réclame à la fois un login et une adresse mail valide sinon c'est erreur et cela limite un peu les attaques.

    Pour éviter les aller-retours entre navigateur et serveur, il utilise une checkbox pour afficher un input type="mail" et désactiver la demande de mot de passe.

    Il faudrait penser à utiliser les fonctions de filtrage des $_POST de PHP :
    http://php.net/manual/fr/function.filter-input.php
    J'utilise systématiquement cela dans mes plugins. Cela augmente la sécurité.
    "!empty($_GET" se remplace par "filter_has_var(INPUT_GET, 'p')"
    Vérifier qu'on poste une adresse mail valide :
    filter_input(INPUT_POST, 'email', FILTER_VALIDATE_EMAIL)
    Tester si on a posté une expression booléenne à vrai ( type checkbox ):
    filter_input(INPUT_POST, 'lostpassword', FILTER_VALIDATE_BOOLEAN)
    La courbe d'apprentissage peut sembler raide pour certains, surtout pour matcher des expressions régulières (je maitrise maintenant), mais cela paye après.

    Il serait bienvenue de pouvoir activer le captcha sur le formulaire d'authentification.

    Mais cela ne vaut pas la double authentification : plugins kzU2f et kzOtPHP.

    Dans config.php et core/lib/class.plx.Admin.php, core/lib/config.php abandonner la fonction define et utiliser des constantes :
    [== PHP ==]
    <?php const PLX_CONFIG_PATH = 'data/configuration/'; ?>
    <?php const PLX_ADMIN =  true; ?>
    <?php const PLX_DEBUG =  true; ?>
    <?php const PLX_VERSION = '5.8-alpha.1'; ?>
    <?php const PLX_ROOT = '../../'; ?>
    // Etc, ...
    

    Désolé d'être trop bavard.
  • cpalocpalo Membres
    Bonjour,

    Je teste ça ce matin.
    Mais cela manquait...

    Cordialement
  • cpalocpalo Membres
    Testé avec deux profils ( dont l'administrateur) eet deux adresses mail différentes
    Lorsqu'on met le pseudo pour récupérer le mot de passe,
    Veuillez saisir votre login ou adresse e-mail pour recevoir un nouveau mot de passe
    Je remets le pseudo
    Erreur lors du changement de mot de passe
    Je saisis l'adrese mail...
    a-priori il accepte, mais je ne reçois aucun mail.
    D'ailleurs il faudrait rendre obligatoire la saisie d'une adresse mail valide avant de pouvoir enregistrer un profil.
    Cordialement
  • bazooka07bazooka07 Membres
    Oups, petit oubli :

    Dans le panneau de config de chaque utilsateur, il faudrait ajouter un bouton pour tester son adresse mail.
  • C'est un mot de passe qui est envoyé ou un lien pour créer un nouveau mot de passe ?
    La différence est importante je pense.
  • P3terP3ter Responsable de PluXml
    Jerry Wham a écrit:
    C'est un mot de passe qui est envoyé ou un lien pour créer un nouveau mot de passe ?
    La différence est importante je pense.

    Je suis d'accord avec toi. Dans cette première version c'est un nouveau mot de passe qui est envoyé par mail. Mais j'aimerais à terme envoyer un lien permettant de créer un nouveau mot de passe.
Connectez-vous ou Inscrivez-vous pour répondre.