J'essaye d'écrire un simple HTTP mémoriser le système d'authentification pour les utilisateurs.HTTP Se souvenir de moi authentification
Mes utilisateurs pourraient être représentés en tant que tels
{
"email" : "[email protected]",
"password" : "8EC41F4334C1B9615F930270A4F8BBC2F5A2FCD3" // sha1 hash of password
}
Donc, mon idée est que je dois créer un cookie, avec le temps d'expiration indéfinie (très long), qui contiendra un certain type d'information pour me permettre de récupérer l'utilisateur à partir de la base de données, donc de se connecter à l'utilisateur.
Ma première idée était simplement de stocker la chaîne email:password
en tant que cookie. Je pensais que ce serait bien puisque personne d'autre ne peut vraiment générer ce type d'information autre que l'utilisateur lui-même, et je pourrais récupérer l'utilisateur assez facilement en comparant simplement les username
et password
en fonction de ce qui se trouve dans la base de données.
Cependant, je pensais que ce n'était pas vraiment bon. Il convertit le résumé du mot de passe en, effectivement, un deuxième mot de passe qui est stocké en clair et passé sur le fil dans chaque demande. Alors j'ai pensé que peut-être je pourrais générer un signature
chaque fois que l'utilisateur se connecte, ce qui serait essentiellement un hachage aléatoire qui est stocké directement dans l'objet utilisateur dans la base de données.
L'utilisateur se connecte, il génère cette signature qui est stockée et le cookie détient cette signature. Chaque fois que vous accédez au site Web, le site vérifie quel utilisateur possède cette signature particulière et enregistre l'utilisateur. La déconnexion effacera le cookie et les nouvelles connexions génèreront une nouvelle signature aléatoire.
Cette approche prend-elle en compte d'autres vulnérabilités?
Je sais, je devrais probablement utiliser une bibliothèque déjà faite pour cela, mais c'est simplement un exercice de sécurité web.
aucun utilisateur n'a jamais fait confiance. même pas les utilisateurs de confiance. – mauris