如何设计相对安全的cookie自动登录系统

53 篇文章 0 订阅
36 篇文章 1 订阅

http://www.myhack58.com/Article/html/3/68/2013/39914.htm

很多网站登录的时候,都会有一个“记住我”功能,用户可以在限定时间段内免登录,比如豆瓣、人人、新浪微博等都有这种设计。这种技术其实就是基于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都会失效;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值