用户修改密码之后,怎么禁止原来登录过的 cookie(还没过期)不能再访问?

2016-12-10 15:13:47 +08:00
 rogwan

用户原来选择了记住登录密码的情况:

是在 session 中存一个 key ,每次登陆和 cookie 校对一下?
还是,在数据表中存一个 key 来和 cookie 校对?

一般大家用什么方式简单还安全?
(说明:没有做长连接,不会一修改密码,就踢异地账号下线。只有等异地账号重新请求时,才能再拒绝cookie访问)

4094 次点击
所在节点    Python
9 条回复
linauror
2016-12-10 15:17:04 +08:00
把数据库中的密码串(加密后的)或密码串的一部分存到 cookie ( cookie 要加密呀),每次验证登录权限时跟数据库中做对比
yinmin
2016-12-10 15:31:28 +08:00
用户注册时,在用户表里保存一个随机产生的 KEY ,当用户修改密码时,更新这个 KEY 。
用户登录时选择“记住登录密码”,下发三个 cookie : UserID 、过期时间、(UserID+过期时间+KEY)的数字签名。

用户再次登录请求时,先判断过期时间是否有效,然后通过 UserID 加载 KEY ,比对数字签名。

注意点:
(1) 不要通过设定 Cookie 过期时间的方式,限制密码保存天数,用户可以很容易篡改 Cookie 过期时间的,应该下发过期时间,并且把过期时间加到数字签名内容中。
(2) 数字签名,最简单的方式是使用 HMAC_SHA1 算法,如果金融类网站可以使用更加安全的 RSA 签名。
dong3580
2016-12-10 15:42:17 +08:00
cookies 信息生成与密码有关就行了,
yinmin
2016-12-10 15:42:52 +08:00
为提高安全性:
(1) cookie 的 HttpOnly 属性要设置为 True ,防止脚本注入后,通过 javascript 窃取 cookie 。
(2) 如果安全要求高,网站可以启用 https ,然后配置 cookie 的 Secure 属性为 True , cookie 仅在 https 协议传输,如果 http 协议不会传输,可以防止网络窃听 Cookie ,冒用登录。
rogwan
2016-12-10 19:30:37 +08:00
@linauror @dong3580 直接截一段密码的 hash 值的方式简单易行

@yinmin 月底就全改 https ,明年 1 月好多新浏览器,苹果都强制 https ,正好一并改了,感谢建议!
adv007
2016-12-10 21:02:14 +08:00
修改密码的用户置标志位,让其重新登陆
wvidc
2016-12-11 15:53:55 +08:00
cookie 组合加密后 和数据库中加密过的 key 对比
orvice
2016-12-11 16:31:24 +08:00
session id 入库,同时也放 redis

改密码等操作,从数据库找出 session id 同时从数据库和 redi 删掉。
lslqtz
2016-12-12 12:22:41 +08:00
我是直接把密码 aes 加密存在 cookie 里,每次登录对比一下。
反正密钥只有我知道。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/326670

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX