Le 28 février 2016 à 10:27:54 fluxies a écrit :
Tu te demandes jamais pourquoi les sites ne te renvois pas ton mdp mais te propose de le réinitialiser ? C'est parcequ'ils l'ont pas en clair.
Mais comment ca marche alors ? À l'inscription, ils vont hashé ton mdp selon un algo (genre sha1), et ensuite à ta prochaine connexion ils compareront ton nouveau mot de passe entré à celui hashé dans la base de donnée.
Tu pourrais éssayer avec les fonction d'encryptage/hashage md5 etc. Je m'y connais pas trop la-dessus, donc je pourrais pas te dire comment tu fais techniquement.
Dans mon cas, je register dans une partie de mon framework l'encodage que je veux, c'est souvent à base de sha1, je crois que tu as une fonction pour le faire en PHP.
Et si tu veux aller plus loin, tu ajoutes une key pour l'encodage définie dans ton application, enfin renseigne toi parceque je pourrais pas te dire comment le mettre en place. (terme 'salt' )
J'approuve totalement, mais je vais rajouter des précisions sur ce point, et car ce que tu recommande peut désormais être fait en une seule ligne pratiquement, avec le hash + salt à la fois.
Depuis PHP 5.5, il est possible d'utiliser la fonction password_hash("le mot de passe", PASSWORD_DEFAULT) afin d'obtenir un hash avec salt à placer en base de donnée.
Et pour l'authentification aussi simplement la fonction password_verify("le mot de passe", "le hash issu de la bdd") renvoyant un booléen TRUE ou FALSE si ça concorde ou non
.
(c'est important d'encourager ces bonnes pratiques surtout quand c'est aussi facile à mettre en place
)
Et un reset ne prend pas 1h à mettre en place (une valeur random à mettre à la demande en BDD, une URL dans le mail contenant cette valeur random, la page de reset checkant ça avec un GET, et si tout est ok, proposant un formulaire ré-effectuant un password_hash et écrasant le hash précédant en BDD avec une query UPDATE
)
Liens à ce sujet:
https://secure.php.net/manual/fr/function.password-hash.php
et
https://secure.php.net/manual/fr/function.password-verify.php