打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
用户登录 和 “记住密码”功能

常见的设计就是:一旦用户勾选了“记住密码”这一选项,那么服务器就会生成一个cookie,其中保存了三样东西:
    1. 用户名:明文存放
    2. 登录序列:一个被MD5散列过的随机数。仅当强制用户输入口令时更新。(我的理解是,这个登录序列就代替了密码的功能,因为密码是不能存放在cookie中的。这样每次登录的时候浏览器会自动将cookie中的用户名和登录序列发送给服务器,验证是否与服务器中的cookie内容相同)
    3. 登录token:一个被MD5散列过的随机数。仅在一个登录session内有效,新的登录session会更新它

    当用户勾选了“记住密码”功能后,之后的每次在相同电脑上输入域名后,浏览器会找到相应的cookie文件,将其中的内容发送给服务器端。服务器检查用户名和登录序列是否匹配,还有检查登录token和上一次的登录token是否相同,如果相同,则认为是同一用户,返回相应的页面,并更新token,保存在服务器端和客户端,以待下次继续验证。
    如果客户端发送来的token和服务器端保存的token不同。比如,考虑这种情况。用户的cookie被盗用,盗用者使用这个cookie文件来登录用户的主页,服务器端通过验证认为是合法用户,并在这次session结束时更新token。那么在用户在自己的电脑上试图登录的时候,服务器会检测到发送的token与服务器端保存的也就是上次会话的不同,此时系统就认为可能发生了被盗用的情况,就会清空登录序列和token,删除cookie,并强制用户输入密码。
    
    但是这种设计也有很大的缺点,比如同一用户在自己的不同设备上的登录。举个例子,我在实验室的时候上校内和在宿舍上校内,我都希望能够自动登录,但是按照上面所说的设计是无法实现的。因此在设计的时候需要使用某些逻辑或者算法来判断是否可能出现被盗用情况,上面所说的设计有点草木皆兵的味道。。。
    一种改进方法是考虑IP地址。比如如果两个设备的IP相同,或者是在同一局域网内(比如某大学的内部校园网),则认为这是用户可控的情况。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
说一说几种常用的登录认证方式,你用的哪种?
shiro实现APP、web统一登录认证和权限管理
密码安全与会话安全
什么是Token验证?验证的流程是什么?优点是什么?缺点是什么?
彻底搞定前后端所有鉴权方案,让你不再迷惘
js使用sessionStorage、cookie保存token
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服