利用cookie实现自动登录
本文介绍了什么叫自动登录,如何利用cookie实现自动登录,以及可能存在的安全问题及相应的解决方案
操作方法
- 01
什么是自动登录? 所谓自动登录就是当用户在访问某一站点的时候不用再输入用户名和密码,直接登录。例子有很多:比如163邮箱的登陆页,如果用户登录的时候勾选了“十天内免登录”,则未来十天内用户访问163邮箱的时候就不用再输入用户名和密码了,只要在浏览器里面输入mail.163.com,则自动跳转到邮箱首页。
- 02
如何实现自动登录? 由于HTTP请求时无状态的,客户端必须携带一些标识自己身份的信息才有可能完成自动登录。只有cookie能完成这个任务。 大致思路就是: 1、用户首次登录的时候,选择“N天内免登录”; 2、系统登录请求返回的时候,往客户端写cookie,cookie中包含用户的登录名,有效期为N天。 3、用户下次再访问该网站的时候,携带cookie; 4、系统根据cookie中的用户名,调用登录的方法,实现自动登录。
- 03
安全性的考虑。 由于cookie是可以被伪造的,所以上述的方案有以下安全隐患: 1、修改用户名,这样就可以随便用其他人的账号登录了; 2、修改cookie的有效期,这样当别人拿到你的电脑的时候,即使已经过了cookie的有效期,仍然可以登陆。 对应的解决思路为: 1、在cookie中增加难以伪造的信息,并且和用户名一一对应。其实密码具备这两个特点,但是密码未经加密就放置在cookie中,不安全。可以选择使用用户的sessionId来做,同时将sessionId加密。这时就需要在服务器端建表记录这种对应关系,假设该表为表A。 2、在服务器端记录用户cookie的失效时间。同样在表A中记录。 修改之后的思路就变成了: 1、用户首次登录的时候,选择“N天内免登录”; 2、系统登录请求返回的时候,往客户端写cookie,cookie中包含用户的登录名,加密后的sessionId,有效期为N天。 3、用户下次再访问该网站的时候,携带cookie; 4、系统根据cookie中的用户名,加密后的sessionId,判断cookie是否过期,校验sessionId和用户名是否匹配,调用登录的方法,实现自动登录。