Sécurisation de l'authentification basée sur les cookies
Je suis actuellement en train de l'affacturage l'une de mes applications web et j'ai été en espérant pour quelques conseils sur l'amélioration de la sécurité de mes données.
Je note que l'application est en ASP.net et l'implémentation actuelle ne me permet pas d'utiliser l'authentification intégrée. C'est aussi, en aucune façon, une application qui requiert un niveau de sécurité élevé, j'aime juste avoir mes bases couverts.
Dans le passé, j'ai stocké les id et un jeton .
Le jeton est un hachage de l'ID de l'utilisateur + de l'utilisateur de Sel (réutilisation de la valeur de l'auth info)
Lorsqu'un utilisateur visite le site de l'ID est vérifié contre le jeton et authed en conséquence.
Il me semble qu'il y a un gros trou ici.
Théoriquement, si quelqu'un a eu entre leurs mains une valeur salt à tous qu'ils avaient besoin de faire est de deviner l'algorithme de hachage et parcourir la possible IDs jusqu'à ce qu'ils ont obtenu. Je ne m'attends pas à ce que cela arrive, mais il semble toujours comme une erreur.
Des conseils sur la façon de bien confirmer que les cookies de l'utilisateur n'ont pas été modifiées?
source d'informationauteur Kelly Gendron
Vous devez vous connecter pour publier un commentaire.
La façon dont la plupart des sites web est de valider l'utilisation et en cas de succès, ils envoient le navigateur un cookie pour stocker et envoyer toutes les requêtes suivantes. Si un attaquant ont été en mesure d'obtenir le jeton (expiration), ils seront en mesure d'emprunter l'identité de l'utilisateur.
De ce fait le cookie et le processus d'authentification devraient toujours être effectués au cours d'une session https. La seule realsitic moyen d'un attaquant d'obtenir le cookie est alors de l'intercepter sur l'ordinateur de l'utilisateur final et, si elles sont en mesure de le faire, ils peuvent probablement installer une touche logger et obtenir le mot de passe utilisateur de toute façon.
À quel type de jeton à utiliser, il n'a pas d'importance tant que c'est pseudo-aléatoire assez gourmand en ressources pour un attaquant de deviner. J'utilise moi-même de Guid. si vous avez besoin d'informations supplémentaires dans le cookie en dehors de tout un sessionid vous pourriez ajouter un GUID, puis probablement de hachage ou de le chiffrer juste pour une ceinture et bretelles approche.
La meilleure façon est de stocker un ID de session comme la valeur du cookie.
Chaque fois que l'utilisateur se connecte, vous créez un enregistrement dans la base de données ou une autre session magasin avec un ID de session aléatoire. Mettre l'ID dans un cookie. Quand vous voyez le cookie plus tard, vous pouvez récupérer toutes les informations de l'utilisateur à partir de la base de données.
Cette approche a des avantages suivants,
Si cela ne fonctionne pas pour vous, essayez de chiffrement. Hash serait mon dernier choix. Hachage elle-même est inutile. Vous avez à stocker les id d'utilisateur et d'autres informations dans un autre cookie en clair. Vous avez fini d'exposer des informations de l'utilisateur.
Deux façons:
C'est bien parce qu'il permet de décrypter; mais il peut être soutenu que vous n'avez pas besoin de le décrypter (en fonction de ce que vous en magasin).
Je serais probablement (et ont déjà) aller avec l'option #1.
pourquoi ne pas stocker uniquement la valeur de hachage dans le cookie, ou tout autre nombre pseudo-aléatoire? Ensuite, vérifiez à l'encontre de la base de données pour obtenir l'ID de l'utilisateur.
D'autres choses:
Rendre le cookie http seule, c'est à dire ne peut pas être définie avec javascript
Si c'est une option, il ne sera transmis avec les données https