Mise à jour de sécurité : en date du 2017-10-23 : Les conseils de cette réponse, bien qu'ayant une importance historique, ne sont absolument pas sûrs. Il ne faut jamais utiliser md5 pour hacher un mot de passe car il est si facilement forcé par brute. Voir cette réponse sur la façon d'utiliser l'API intégrée password_* pour hacher et vérifier les mots de passe.
J'ai déjà eu affaire à des systèmes de connexion/authentification et je trouve que cette méthode présente plusieurs lacunes :
- vous "md5 son mot de passe, et vérifiez la base de données" -- cela signifie que si une personne a accès à la base de données, elle peut savoir qui a les mêmes mots de passe !
ADDENDUM (19 Sep 2015) * Regardez ça. enlace . Il explique toutes les bases, les approches que vous pouvez adopter, pourquoi vous devriez adopter ces approches et vous donne également des exemples de code PHP. Si c'est trop long à lire, il suffit d'aller à la fin, de prendre le code et de se lancer !
MEILLEURE APPROCHE : pour stocker le md5 de username+password+email+salt
dans la base de données, sel étant aléatoire, et stocké avec le dossier de l'utilisateur.
- l'utilisation de l'"uid" directement dans les variables de session peut être très risquée. Prenons l'exemple suivant : mon ami est connecté à partir de mon navigateur, et il part pour une fuite. Je vérifie rapidement quels cookies sont définis dans son navigateur et je déchiffre son 'uid'. Maintenant, il m'appartient !
MEILLEURE APPROCHE pour générer un identifiant de session aléatoire lorsque l'utilisateur se connecte avec succès, et stocker cet identifiant de session dans le fichier $_SESSION[]
réseau. Vous devrez également associer le sessionid à son uid (en utilisant la base de données, ou memcached). Les avantages sont :
- Vous pouvez même lier un identifiant de session à une IP particulière afin que l'identifiant de session ne puisse pas être utilisé de manière abusive même s'il est capturé.
- Vous pouvez invalider un ancien identifiant de session si l'utilisateur se connecte depuis un autre endroit. Ainsi, si mon ami se connecte depuis son propre ordinateur, l'identifiant de session de mon ordinateur devient automatiquement invalide.
EDIT : J'ai toujours utilisé les cookies manuellement pour la gestion de mes sessions. Cela m'aide à intégrer plus facilement les composants javascript de mes applications web. Vous aurez peut-être besoin de la même chose dans vos applications, à l'avenir.
1 votes
Vous savez déjà comment utiliser correctement les sessions. Cependant, ce que vous essayez de construire, c'est un module authentification système. C'est beaucoup plus complexe. Vous pouvez jeter un coup d'œil à github.com/delight-im/PHP-Auth et inspecter sa source pour voir quelque chose dans lequel beaucoup d'efforts et de réflexion ont été mis.