【问题标题】:Why does CodeIgniter store so much data in it's cookie?为什么 CodeIgniter 会在它的 cookie 中存储这么多数据?
【发布时间】:2012-05-09 08:57:14
【问题描述】:

我已将 CodeIgniter 设置为在数据库中存储会话,但它仍然坚持将以下内容放在 cookie 中:

a:4:{
 s:10:"session_id";s:32:"191668b039f27f1a4fa25586aaaf708e";
 s:10:"ip_address";s:14:"123.12.123.123";
 s:10:"user_agent";s:50:"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko";
 s:13:"last_activity";i:1336549698;
}9fed5a2005d9df3ccedff9589aa7d36f

所有这些也在default_ci_sessions 中,所以我不知道为什么它也在cookie 中!我之所以问,是因为关于本地存储用户身份数据的新欧盟 cookie 立法。我不完全确定这是否属于立法范围,但已经提出了担忧。

【问题讨论】:

  • 你太担心了。世界上几乎每个网站都这样做。
  • 这与 PyroCMS 无关,它是 CI 做事的方式。请修改您的问题,我和@narfbg 将与其他 CodeIgniter 开发人员讨论此问题。

标签: php codeigniter cookies


【解决方案1】:

这来自 CodeIgniter Session 库的逻辑(因为 PyroCMS 是用 CI 构建的)。我目前无法告诉您为什么会这样,但我也认为不需要将此类数据单独存储在 cookie 本身中。我将就此展开讨论,并在此处发布链接以进行跟踪。

编辑:https://github.com/EllisLab/CodeIgniter/issues/1344

【讨论】:

    【解决方案2】:

    我很确定这与 CI Session 类和您可以设置的首选项有关。

    当脚本检查 cookie 的有效性时,它(可能)检查来自 Input 类的当前用户代理数据的 IP 地址和 UA 字符串,无论您是否使用 DB 会话(在 @987654322 @) 来验证 cookie。如果您使用的是数据库,它还会根据 cookie 数据检查数据库数据。

    脚本这样做是为了防止黑客攻击 - 理论上有人可以猜出或嗅探正确的 session_id、IP 地址或 UA 字符串,但所有这三个都会更难。

    更多http://codeigniter.com/user_guide/libraries/sessions.html

    【讨论】:

    • 这并不能解释为什么它存储在本地机器上,它都可以在服务器上完成,只需在 cookie 中存储一个会话 id,就像原生 php 会话一样
    • 是的 - 脚本将 cookie 与 UA 详细信息和 DB 进行比较。
    • 我看不出存储在会话中的 UA 详细信息(等)之间的区别。
    • 是的,就像我说的那样,它会根据 UA 详细信息验证 cookie。这可能有点矫枉过正,因为您可以只针对数据库执行此操作,但您可以为提高安全性所做的任何事情都是值得的。
    • cookie中的信息与数据库中的信息相同。 UA 的详细信息不妨与数据库中的详细信息进行比较,而不是将其全部保存在 cookie 中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-19
    • 2011-12-31
    • 1970-01-01
    • 2017-06-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多