Aller au contenu

[Update] Site PHP : "se souvenir de moi"

Icône de cadenas

Refonte du système de connexion proposé en Novembre 2012.

Force est de constater que le système de connexion long-terme que j'ai proposé en Novembre dernier comporte quelques petits défauts. Je vous propose donc une version remaniée et améliorée.

En effet, il restait encore quelques failles, et l'utilisation d'adresses IP pour identifier l'utilisateur à long terme posait problème pour ceux qui en changent régulièrement (comme moi et ma connexion Free).

Problèmes et solutions

Toutes les modifications apportée au code sont décrite ici. Je ne cite pas le code, difficile à présenter hors contexte.

  1. Réécriture du code, orienté objet.
  2. Hash des mots-de-passe : utilisation de bcrypt (PHP 5.3) avec Secure-random-bytes-in-PHP
  3. Abandon de la vérification d'IP pour la session LT (long-terme)
  4. Utilisation d'une authentification à 2 états : "non sécurisé" / "sécurisé" (l'utilisateur a rentré son mdp récemment et n'a pas changé d'IP). Cela s'utilise typiquement en redemandant son mot de passe à l'utilisateur pour des actions critiques comme changer d'email/mot-de-passe ou accéder à l'administration d'un site.
  5. Identifiant LT à usage unique : dès qu'il sert à regénérer la session CT (court-terme), il change de valeur.
  6. Multi-connexions : pouvoir utiliser l'identifiant de session LT pour différentes sessions. Dans ce cas, l'identifiant unique serait (nom d'utilisateur+identifiant de session LT)
  7. Déconnexion volontaire : invalide toutes les sessions (LT et CT) de l'utilisateur, sur tous ses navigateurs/ordinateurs.

Télécharger YosLogin

Téléchargez directement YosLogin sur GitHub

Par sécurité, je conserve aussi une page de téléchargement sur mon wiki.

Conclusion

Malgré tous mes efforts, je n'ai sans doute toujours pas atteint la perfection. Si vous remarquez le moindre défaut dans cette version, n'hésitez pas à m'en faire part sur la page GitHub du projet.

Sources utilisées pour réaliser cette version :

Keep safe & log on.

PS : je vais enfin pouvoir reprendre mes travaux sur DDb, dont je proposerai les nouvelles versions sur GitHub aussi :)