如何保证 Cookie 自动登录的安全性

2017-06-22 16:48:21 +08:00
 blessleroy

一般自动登录,也就是“ remember me ”的功能都是利用 Cookie 实现的,这里就涉及到一个问题,Cookie 里到底怎样存放数据才能保证系统的安全

看到很多简易的系统,直接保存了 Username 和 Password Hash,这样子设计在自动登录时可以直接传入数据库验证。但缺点是容易暴露系统的加密算法。

请结合你的项目谈一谈 Cookie 自动登录的系统设计

5368 次点击
所在节点    程序员
27 条回复
skylancer
2017-06-22 22:00:44 +08:00
说了一堆,就没一个人想到重放攻击
skylancer
2017-06-22 22:00:57 +08:00
..额 19 楼讲了
好吧,没看到
Wuxj
2017-06-22 23:11:51 +08:00
phithon
2017-06-22 23:41:17 +08:00
存:将用户账号+时间戳,进行签名。
将用户账号+时间戳+签名,进行加密。
将密文存入 cookie。
取:解密 cookie
取出签名,和用户账号+时间戳进行比对。
比对成功,再将时间和 now()进行比对,未超出 remember 的时间(如一个月),则校验成功。
记录 session。
izoabr
2017-06-23 00:46:01 +08:00
你的提问有 bug,不过我提个新的思路。

之前存 sessionid 到 cookie 也确实有被劫持风险的,所以 cookie 里高级一点的我们会拿本地特征作为 salt+ID 进行验证,验证匹配才认可 session
killerv
2017-06-23 09:09:42 +08:00
我还没见过保存 password hash 的,一般都是本地 cookie 保存一个 token,直接跟服务器的 token 进行校验,如果不对或者超过有效期就失效。或者直接维护一个 session,直到回话结束。
zjsxwc
2017-06-23 13:43:20 +08:00
当然是在 cookie 里存个 token,为了能自动登录,这个 token 比 session id 的寿命长,一般不会过期,然后服务端就是根据这 token 查询到用户咯

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

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

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

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

© 2021 V2EX