java记住我_记住我remember-me功能的几种实现方式

更新时间:2023-05-25 11:52:25 阅读: 评论:0

类似爱情萧亚轩-认识国旗

java记住我_记住我remember-me功能的几种实现方式
2023年5月25日发(作者:儿童急走)

java记住我_记住我remember-me功能的⼏种实现⽅式

本⽂讨论⼏种“记住我”功能的实现⽅式。

原理:⽤户登录后,服务端为⽤户⽣成⼀个Token,并放⼊客户端Cookie中。下次⽤户登录,服务端验证Cookie中的Token并⾃动登录。

简单的Token⽣成⽅法

Token=MD5Hex(urname+分隔符+expiryTime+分隔符+password)

CookieValue=Ba64(urname+分隔符+expiryTime+分隔符+Token)

urname:⽤户名。

password:⽤户密码。

expiryTime:Token的失效时间,以毫秒表⽰。

该⽅法⽣成的Token不需要持久化,每次⽣成时失效时间不同,可保证Token不同(也可以在Token中增加⼀些变量,如系统配置的key)。

⽤户第⼀次登陆时⽣成Token;

第⼆次打开系统时,根据CookieValue中urname查询数据库,并重新⽣成Token,验证⽤户提交Token是否正确,如果正确成功登⼊系

统,如果不正确,调整到登陆页⾯。

存在安全问题。

当⽤户Cookie被窃取(HttpOnly增加安全性),任何⽤户都可以在Token失效之前登录。发现被盗⽤,可以修改password来使Token失

效,或者系统在⽤户每次登⼊系统时都重新⽣成Token。

缺点:由于Token没有持久化,所以需要从已知的变量(如urname、password、expiryTime)重新⽣成来验证,password即使加密放

⼊前台,也不是⼀个好的解决⽅法。纵然不使⽤password,也需要其他变量来保证Token的可靠性。

持久化的Token⽣成⽅法

Token的⽣成规则可以⾃定义,只要保证每次urname的Token不⼀样就可,例如采⽤16位随机数(如Java的SecureRandom)。规则同

上⾯类似,只是将Token与⽤户信息解耦。但是安全问题依旧存在。

持久化Token⽣成⽅法并验证Cookie是否被窃取

Token:随机⽣成策略,只要保证urname唯⼀性。

ries:登录序列号,随机⽣成策略。⽤户输⼊⽤户名和密码登录时,该值重新⽣成。使⽤remember-me功能,该值保持不变,重新⽣成

Token。

expiryTime:Token过期时间。

1)每次⽤户选择记住我并登录后,都重新随机⽣成ries、Token,保存到数据库和前端Cookie中。

2)下⼀次⽤户再次访问系统,

情况⼀:前台Cookie中保存的ries值在数据库中不存在,跳转到登录页⾯。

情况⼆:ries、Token与数据库中⼀致,则仍为合法⽤户,并保持ries不变,重新随机⽣成Token,覆盖前台Cookie值。

情况三:ries在数据库中存在,但Token不⼀致,说明Cookie被窃取。

情况⼀、同⽤户相同浏览器访问系统

情况⼀、同⽤户相同浏览器访问系统

情况⼆、同⽤户不同浏览器访问系统

情况⼆、同⽤户不同浏览器访问系统

情况三、Cookie被盗

情况三、Cookie被盗

安全问题依然存在。

a. 可以考虑⽤户访问等级,如⽤户名密码登录级别最⾼,⽽对于Token记住我登录次之,对于⼀些重要的业务操作时(如⽀付),还是需要进

⾏⽤户⾝份认证。

b. 还可以考虑⽤户IP,但现在移动⽤户,经常切换WiFi和⽹络,所以IP也会发⽣变化。例如⼿机银⾏(如招⾏客户端)切换⽹络后,需要重新

登录,提⾼安全性。

c. 还可以考虑,⽤户常⽤IP、城市等安全策略。

傅雷家书阅读感想-中秋活动

java记住我_记住我remember-me功能的几种实现方式

本文发布于:2023-05-25 11:52:23,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/zhishi/a/1684986745176455.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:java记住我_记住我remember-me功能的几种实现方式.doc

本文 PDF 下载地址:java记住我_记住我remember-me功能的几种实现方式.pdf

标签:remenber
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 实用文体写作网旗下知识大全大全栏目是一个全百科类宝库! 优秀范文|法律文书|专利查询|