[Corrigé 3.1.40] User edit password - V 3.1.37

Vous avez trouvé un bug dans l'application (dernière version stable ou bêta): Décrivez le ici afin que la correction soit intégrée a la prochaine version.
Répondre
Avatar du membre
kl3sk
Gsup LEVEL 1
Messages : 14
Enregistré le : lun. 18 mars 2019 11:22

Lors de la modification d'un utilisateur, lors de sa récupération on récupère sont password hashé et il est réinjecter dans le formulaire.
Ceci n'as aucun sens car par inadvertance on enregistrer un password déjà hashé pour le rehasher.

De plus il n'y as pas de double vérification des mots de passe.

Je propose ces changement dans le fichier suivant
user.7z
Fichier /admin/user.php
(11.8 Kio) Téléchargé 393 fois

Nota: Je ne l'ai pas fait ici mais il serait bon d'ajouter un

Code : Tout sélectionner

autocomplete="off"
sur les champ mot de passe. En effet Chrome pour ne pas le citer a tendance a remplir les formulaire un peu trop facilement lors que l'on a des mots de passe enregistré. Ce qu'il fait que l'on risque de changer le mot de passe par inadvertance.

Nota2: Avec la double vérification, le Nota1 ne devint plus vraiment véridique.
Nginx - php 7.2 - Gestsup 3.1.43
Avatar du membre
Flox
Administrateur du site
Messages : 9436
Enregistré le : jeu. 21 juin 2012 19:00

Bonjour,

lors de la modification d'un utilisateur le mot de passe hashé sans salt est récupéré afin d'éviter une nouvelle saisie de ce dernier lors de la modification de la fiche utilisateur.
Le mot de passe hashé ne peut être hashé une nouvelle fois car un contrôle existe à ce niveau.
Un mot de passe est hashé uniquement si le champ à été modifié.

> Sans cette récupération la modification des autres onglets de la fiche utilisateur est impossible.

Concernant la confirmation du mot de passe il s'agit d'une bonne idée, je vais intégré vos modifications pour les prochaines versions.

Concernant les champs identifiants et mot de passe il sont tous les deux déja avec l'attribut autocomplete à off lors de la création d'un utilisateur:
Fichiers joints
2019-03-19 11_37_56-screenshot-zensoft.png
2019-03-19 11_37_56-screenshot-zensoft.png (7.68 Kio) Vu 8174 fois
GestSup: 3.2.47 | Debian: 12 | Apache: 2.4.59 | MariaDB: 11.5.2 | PHP: 8.3.12 | https://doc.gestsup.fr/
Avatar du membre
kl3sk
Gsup LEVEL 1
Messages : 14
Enregistré le : lun. 18 mars 2019 11:22

Effectivement j'ai vu le principe md5 + salt utilisé. Bien que "salté" le MD5 reste déprécié. Ceci est un autre débat.

Par contre je trouve contre intuitif de préremplir un mot de passe. Nulle par cette fonctionnalité est en place sur les sites ou autres.
Example: ce forum
phpBB-example.png
phpBB-example.png (28.86 Kio) Vu 8173 fois

Un mot de passe vide signifie pas de changement, d'où le double intérêt du double (ça vais deux foi double oui :D ) champs mot de passe.


Edit: Effectivement j'avais oublié que le autocomplete étant présent. Méaculpa :roll:
Nginx - php 7.2 - Gestsup 3.1.43
Avatar du membre
Flox
Administrateur du site
Messages : 9436
Enregistré le : jeu. 21 juin 2012 19:00

Bonjour,

une modification sera disponible dans la version 3.1.40 permettant :
- de gérer la confirmation de mot de passe sur le formulaire de création et de modification d'utilisateur
- de remplacer le mode de hashage md5+salt par la fonction "password_hash" de php
- de supprimer l’auto complétion des champs identifiant et mot de passe avec chrome (autocomplete="new-password" )

cdt
Fichiers joints
2019-03-19 20_04_49-screenshot-zensoft.png
2019-03-19 20_04_49-screenshot-zensoft.png (18.33 Kio) Vu 8164 fois
GestSup: 3.2.47 | Debian: 12 | Apache: 2.4.59 | MariaDB: 11.5.2 | PHP: 8.3.12 | https://doc.gestsup.fr/
Avatar du membre
kl3sk
Gsup LEVEL 1
Messages : 14
Enregistré le : lun. 18 mars 2019 11:22

Password Hash semble une meilleur alternative effectivement.

Je conseillerais même de vérifier la version de PHP et utiliser Argon2i si c'est > PHP7.2


http://php.net/manual/fr/password.constants.php
https://crypto.stackexchange.com/a/49969
Nginx - php 7.2 - Gestsup 3.1.43
Avatar du membre
Flox
Administrateur du site
Messages : 9436
Enregistré le : jeu. 21 juin 2012 19:00

Bonjour,

L'option choisie pour la fonction "password_hash" est "PASSWORD_DEFAULT", cette dernière semble intéressante car l'algo est automatiquement mis à jour en fonction des MAJ PHP.

cdt
GestSup: 3.2.47 | Debian: 12 | Apache: 2.4.59 | MariaDB: 11.5.2 | PHP: 8.3.12 | https://doc.gestsup.fr/
Avatar du membre
kl3sk
Gsup LEVEL 1
Messages : 14
Enregistré le : lun. 18 mars 2019 11:22

La doc PHP n'est pas hyper claire sur ce point. C'est pour cela que je doute sur le fait cette constante suive vraiment les MAJ.
PASSWORD_DEFAULT (entier)

L'algorithme par défaut à utiliser pour le hachage si aucun algorithme n'est fourni. Cette valeur peut changer dans les futures versions de PHP où il est probable que de meilleurs algorithmes de hachage soient supportés.

Cette valeur peut (et va certainement) changer dans le temps. Toutefois, vous devez être prudent sur le fait que la longueur du résultat peut changer aussi. Aussi, si vous utilisez la constante PASSWORD_DEFAULT, vous devriez stocker le hache résultant dans un champ supportant au moins 60 caractères (255 caractères serait un excellent choix).

Valeur pour cette constante :

PHP 5.5.0 - PASSWORD_BCRYPT
Certe il est noté PHP 5.5.0 - PASSWORD_BCRYPT mais pas d'info pour PHP 7.x
Nginx - php 7.2 - Gestsup 3.1.43
Répondre