在cookie中存储会话数据

时间:2013-08-30 07:39:05

标签: php session cookies

最近我偶然发现了一些建议使用cookie来存储会话数据的文章。 我喜欢这个想法并通过添加一个工作正常的CookieStorage类来扩展我的会话存储(请注意,每个用户我使用一个唯一的哈希键来进行数据的加密和加密) 但是,有很多其他文章建议不要在cookie中存储敏感数据,即使您对值进行加密和签名。

就个人而言,我发现没有理由不这样做,尤其是在为每个用户使用不同的密钥加密和签名值时。数据泄露的风险与正常会话相同,不是吗?更不用说如果你使用SSL,那么劫持的风险就会被消除。

我认为这种方法的好处是,如果会话数据不大,则服务器上用于打开/读取/写入会话数据的IO操作较少,无论存储是文件,db,基于内存还是

感谢您对此事的反馈

由于

2 个答案:

答案 0 :(得分:3)

如果您使用纯cookie存储而根本没有服务器端组件,则用户可以控制数据。阻止他的唯一因素是加密/签名方法;但那可能会受到攻击。如果您没有使用特定于用户会话的加密/签名密钥(即您没有使用服务器端会话),那么您几乎只限于静态秘密。有人可以离线攻击,试图暴力破解它。一旦他们这样做,他们就可以欺骗他们整个会议。

如果您使用存储在服务器端会话中的更安全的一次性随机密码......您已经在服务器端会话中存储数据了!为什么不保持简单并将所有东西存储在那里?它还可以减少每次请求来回传输所有cookie所需的带宽需求。

如果您这样做主要是为了节省服务器上的I / O操作:使用更高效的会话存储,如基于memcache的存储。

答案 1 :(得分:0)

  1. 虽然现在会话ID仅通过cookie传输,但最初还有其他方式,仍然支持并且可以使用。
  2. 有时服务器需要知道或更改会话信息。
  3. @CBroe关于cookie大小的观点。