Cookie的安全性问题的解决方案

Posted 季诗筱

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Cookie的安全性问题的解决方案相关的知识,希望对你有一定的参考价值。

面试被问到了登录时候用cookie的话,安全性问题怎么解决?我基本没有答上来……自己的回答也是醉啊,当时紧张的大脑都不能思考了。所以自己重新学习了一下,先把弄懂了的解决方案记录下来,今后有更好的方法再更新博客。

将用户的认证信息保存在一个cookie中,具体如下:
1.cookie名:uid。推荐进行加密,比如MD5(‘站点名称’)等。
2.cookie值:登录名|有效时间Expires|hash值。hash值可以由”登录名+有效时间Expires+用户密码(加密后的)的前几位 +salt”,salt是保证在服务器端站点配置文件中的随机数。
这样子设计有以下几个优点:
1.即使数据库被盗了,盗用者还是无法登录到系统,因为组成cookie值的salt是保证在服务器站点配置文件中而非数据 库。
2.如果账户被盗了,用户修改密码,可以使盗用者的cookie值无效。
3.如果服务器端的数据库被盗了,通过修改salt值可以使所有用户的cookie值无效,迫使用户重新登录系统。
4.有效时间Expires可以设置为当前时间+过去时间(比如2天),这样可以保证每次登录的cookie值都不一样,防止盗用者 窥探到自己的cookie值后作为后门,长期登录。

未完待续

以上是关于Cookie的安全性问题的解决方案的主要内容,如果未能解决你的问题,请参考以下文章

用 Java 解决“加密会话 (ssl) cookie 中缺少安全属性”

从 Express 设置浏览器 cookie 的安全性

没有 cookie 的安全会话管理

如果我们尝试设置之前安全的 cookie,浏览器会忽略 Set-Cookie 响应标头

请教Express 中的 session 和 cookie 的安全问题

安全修复之Web——会话Cookie中缺少HttpOnly属性