Administrateur PHPfrance |
9782 Messages
10 avr. 2021, 08:18
2 possibilités :
1) Soit tu forces effectivement le changement de mot de passe de tous tes utilisateurs
2) Soit tu t'accordes une période de transition pendant laquelle tu mets à jour le hash discrètement au fur et à mesure que les utilisateurs s'identifient.
Voici le principe :
- D'abord, tu augmentes la taille du champ password de ta base de données car le SHA256 prend plus de caractères que le md5
- Ensuite à chaque fois qu'un utilisateur essaye de se connecter :
.......... Tu vérifies si le mot de passe saisi est correct en sha256, si oui alors tu le connectes
.......... Si non, alors tu vérifies en md5(), s’il est correct alors tu réencodes le mdp saisi en sha256 et tu updates ta bdd
.......... Si il n'est pas correct en sha256() ni en md5(), c'est que le mdp est faux.

Ainsi à chaque fois qu'un utilisateur va se connecter ça va passer son mdp en sha256() sans qu'il s'en rende compte.
Quelques mois plus tard tu regardes combien d'utilisateurs ont encore un mdp dans ta base avec un hash de 32 caractères (qui correspond donc au md5) et tu peux rebasculer sur la possibilité 1 de vider leur mot de passe et de forcer uniquement ceux-là (qui sont des utilisateurs inactifs) à changer leur mot de passe.
Ou alors si tu veux éviter de les solliciter par e-mail, tu supprimes leur mot de passe de ta base, et quand ils essayent de se connecter à ton site, tu leur affiches un message comme quoi ils doivent réinitialiser leur mot de passe et tu leur envoies un mail de réinitialisation de mot de passe.
Quand tout le reste a échoué, lisez le mode d'emploi...