Non, pas du tout. Vous n'avez aucune garantie que les cookies ne sont pas stockés en texte clair (et en fait, la plupart des implémentations de ces cookies ne sont pas sécurisées). faire les stocker en texte brut).
Il faut savoir que la fonction "remember me" est intrinsèquement peu sûre, car quiconque intercepte le cookie a accès à l'application. Mais exposer le mot de passe d'un utilisateur fait descendre encore plus bas dans l'échelle de l'insécurité :-) Et rend probablement l'utilisateur très furieux, s'il le découvre.
J'utilise une chaîne de cookies cryptés qui comprend le nom du compte de l'utilisateur combiné à un jeton qui n'est associé d'aucune façon (autre) au compte de l'utilisateur, sauf dans une table sur mon serveur. Lorsque l'utilisateur revient sur le site, nous décryptons le cookie et vérifions si ce jeton est effectivement associé à ce compte. Le jeton (et donc le cookie) change à chaque auto-login, et invalide celui utilisé pour cet auto-login. (Il y a une relation multiple entre les jetons et le compte, pour permettre l'auto-login à partir de plusieurs endroits. Vous pouvez limiter cela si vous le souhaitez). Les jetons expirent s'ils ne sont pas utilisés dans un délai de X jours. (Cela ne se fait pas seulement en limitant la durée du cookie, mais aussi côté serveur). Il y a quelques autres choses que j'ai ajoutées pour rendre la vie plus facile. bit difficile pour quelqu'un qui essaierait de décoder le cookie (après l'avoir décrypté avec succès) ou d'utiliser un cookie volé (qui ne nécessite pas de décryptage), mais il est inutile d'en faire trop (encore une fois, "remember me" est intrinsèquement peu sûr).
Je l'utilise sur un site où une sécurité robuste n'est pas vraiment nécessaire (évidemment) et qui a un grand nombre de clients à IP dynamique, et donc je n'essaie pas de le verrouiller à une IP. Mais même le fait de le verrouiller sur une IP ne le rend pas sûr, cela réduit juste un peu la surface d'attaque.
Vous vous demandez peut-être pourquoi j'ai le nom d'utilisateur dans le cookie. Pour des raisons de "mémorisation", je ne recommanderais pas de l'y placer, même s'il est crypté (après tout, c'est la moitié de la paire d'authentification dans un système de nom d'utilisateur et de mot de passe). J'ai été un peu surpris de le trouver dans notre cookie lorsque j'ai regardé le format en me rappelant comment nous avons fait cela pour cette question ; mais ensuite j'ai vu les commentaires expliquant pourquoi il est là et il y a des raisons sans rapport avec le "remember me" (pas nécessairement persuasif des raisons, a posteriori, mais des raisons).
Enfin, le fait que la fonction "se souvenir de moi" soit intrinsèquement peu sûre est l'une des nombreuses raisons pour lesquelles les journaux de site sont très importants, et pourquoi vous devriez exiger la revérification du mot de passe dans le processus d'autorisation des modifications des informations importantes du compte (pour qu'il soit plus difficile pour une personne ayant volé le cookie de s'approprier le compte).
13 votes
Laissez FormsAuthentication s'en charger ! FormsAuthentication.SetAuthCookie(username, true) ;