如何设计相对安全的cookie自动登录系统
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何设计相对安全的cookie自动登录系统相关的知识,希望对你有一定的参考价值。
很多网站登录的时候,都会有一个“记住我”功能,用户可以在限定时间段内免登录, 比如豆瓣、人人、新浪微博等都有这种设计。这种技术其实就是基于 cookie的自动登录, 用户登录的时候会把需要验证的token写到cookie里面,当用户session失效的时候, token会通过cookie 发送给服务器端,服务器端解析token判断是否已经登录; 这里面的token如何设计是关键,到底存什么数据才能保证系统的安全性呢? 有些新手可能会想,把用户id和password直接md5加密存到cookie,这样做是最糟糕的设计, 用户的敏感信息直接暴露出来,黑客可以伪造别人的id进行尝试性登录, 可以想象黑客知道了admin账号的id,试过几千几万次,密码和加密算法很可能破解出来。 token要相对安全,不应该是简单的用户名和密码md5加密, 用户密码其实完全可以不用存进去,分两步来做: 1)token 是一些信息的组合,用户id+用户名+expires过期时间+ip地址+salt, 具体加密算法最好自己写,不能使是常见的加密函数(md5), 当然这 个加密函数必须可逆,这个token我们同时要保存在用户表数据库里面, set cookie的时候记得http only; 2) 服务器端拿到cookie之后,进行逆解析, 这个时候我们要验证如下信息:cookie是否过期、ip地址是否发生变化、用户id和用户名是否存在; 用户 存在之后,我们再拿这个token跟第一步存在数据库中的token进行比较, 看是否相等,如果不等说明token已经过期,这样做可保证每次用户登录之 后token值都不一样, 之前用过的token都会失效;
以上是关于如何设计相对安全的cookie自动登录系统的主要内容,如果未能解决你的问题,请参考以下文章