Lorsqu'un utilisateur sélectionne la fonction remember me, j'enregistre son nom d'utilisateur et son identifiant dans un cookie. Ensuite, lorsque l'utilisateur revient sur le site, je vérifie le nom d'utilisateur et l'identifiant par rapport à une base de données pour m'assurer que l'utilisateur est légitime. Je note ensuite l'utilisateur en stockant les données de cookie dans la variable de session. Est-ce la bonne façon de se souvenir et de se connecter à un utilisateur?Enregistrement des informations utilisateur dans un cookie
Répondre
Les cookies ne sont pas un moyen très sûr de stocker des données. Les cookies peuvent être modifiés par un utilisateur et pourraient conduire à un "piratage" de votre site. Ce que je suggère est de stocker une chaîne dans le cookie qui est un hachage de quelque chose. Stockez également la chaîne hachée du cookie dans votre base de données. De cette façon, lorsqu'un utilisateur revient sur le site, vous vérifiez si le cookie est rempli, faites-le correspondre à la valeur hachée dans la base de données et trouvez ensuite qui possède cette valeur hachée. Si tout est valide, les connecter.
configuration de base de données
secretKey PK varchar
userid (could be unique) int
validUntil int or date/time
//If userID is unique you will have to remove this row from the
// database when a new key is made for the user, This would then mean
// that a user would only be allowed to be rememberd on one computer
pseudocode
//User logs in with remember me
//set cookie to something like md5(userid,username,timestamp)
//store the md5 in the database layout
//User Returns to site
//check to see if cookie is set
//if cookie set
//find md5 in database which is logged with user id
//if found and not yet expired log in
//else show login page
//if cookie not set show login page
Dans le valide jusqu'au champ définiriez-à-dire 2 semaines de connexion. Une fois que le valide est passé, ne laissez pas cette clé fonctionner et assurez-vous que le cookie a expiré pour l'utilisateur.
requête pour vérifier se connecter
SELECT * FROM rememberMe OU key = "// mettre md5 ici" ET validUntil> temps()
D'accord, je vois ce que vous dites, mais comment puis-je gérer le champ validUntil? Qu'est-ce que je fais quand cette date passe? – user532493
Voir le nouveau message maintenant – bretterer
Ce champ secretKey devrait-il être dans la table avec tous mes utilisateurs, ou devrait-il y avoir une nouvelle table pour secretKeys? – user532493
n °
Cela dépend à quel point sécurisé vous voulez obtenir. Voici quelques choses que vous pouvez faire (tout ou partie d'entre eux) afin d'augmenter la sécurité:
- Ne pas stocker quoi que ce soit spécifique dans le cookie (nom d'utilisateur/id/etc.). Utilisez un non-sens généré de manière aléatoire (jeton).
- Dans votre DB, vous pouvez avoir un jeton < - mapping> utilisateur
- Vérifiez le jeton contre votre DB et connectez l'utilisateur quand il y a un match
- détruire le jeton (drapeau comme « consommé », peut-être pour être supprimé plus tard, peu importe ce que vous décidez, le jeton ne devrait plus fonctionner).
- Utilisez
https
uniquement pour transmettre les biscuits, connexion, etc. - Si un utilisateur envoie un jeton périmé (ie qui ne sont pas dans votre base de données, ou qui a été marqué comme consommé), cela signifie qu'il est possible que le jeton ait été compromis. À chaque demande d'utilisateurs authentifiés (et peut-être même avec ajax), comparez le jeton avec lequel ils se sont connectés (vous pouvez le stocker dans la session) avec une liste de tentatives de jetons périmés. S'il y a correspondance, cela signifie qu'il est probable que l'utilisateur authentifié ait piraté le jeton. Mets-les dehors.
D'accord, merci beaucoup pour tous les conseils. – user532493
- 1. Enregistrement des informations d'identification/jeton dans un cookie?
- 2. Enregistrement des informations utilisateur sans compte
- 3. Enregistrement des informations d'identification utilisateur dans une application Windows
- 4. Enregistrement des informations modifiées dans Django
- 5. Chiffrer et déchiffrer des informations dans un cookie
- 6. comment extraire des informations spécifiques dans cookie dans asp.net
- 7. Enregistrement de l'état de l'interface utilisateur avec cookie et jquery
- 8. Enregistrement d'un cookie
- 9. Est-il sûr de stocker l'objet utilisateur dans un cookie?
- 10. Insertion des informations utilisateur facebook dans un formulaire
- 11. CakePHP - Mise à jour des informations sur un utilisateur connecté
- 12. Récupération des informations utilisateur enregistrées dans Alfresco
- 13. Findout des informations utilisateur dans l'API Google
- 14. Enregistrement des préférences utilisateur en Java
- 15. Facebook - JavaScript SDK et enregistrement des informations utilisateur dans une base de données
- 16. Comment obtenir des informations de cookie dans blackberry HttpConnection
- 17. Ajouter des informations utilisateur dans un modèle supplémentaire ou actuel?
- 18. Twitterizer obtenir des informations utilisateur
- 19. Xcode 4.3 Enregistrement des données utilisateur
- 20. Enregistrement des informations de la console ffmpeg
- 21. Enregistrement d'un utilisateur et d'un profil dans des tables distinctes
- 22. Enregistrement des informations de carte de crédit
- 23. JSF Stockage des données dans un cookie
- 24. Hashage Mot de passe utilisateur dans Cookie
- 25. Enregistrer des "favoris" dans un cookie Rails?
- 26. Stockage des données PHP dans un cookie
- 27. Flux utilisateur après enregistrement
- 28. Django: Enregistrer l'ID utilisateur dans le cookie
- 29. Enregistrement pour "toujours" des informations dans Android téléphone
- 30. Rappel App Engine pour un nouvel utilisateur "enregistrement"/connexion utilisateur?
http://stackoverflow.com/questions/2594960/best-practice-to-implement-secure-remember-me –