为什么CodeIgniter会在其cookie中存储如此多的数据?

时间:2012-05-09 08:57:15

标签: php codeigniter cookies

我已将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法规。我并不完全确定这属于法律规定,但已经引起了人们的关注。

2 个答案:

答案 0 :(得分:1)

这来自CodeIgniter会话库的逻辑(因为PyroCMS是使用CI构建的)。我目前无法告诉你为什么这样做,但我也没有看到需要将这些数据单独存储在cookie本身。我将就此进行讨论,我将在此处发布链接以跟踪。

修改:https://github.com/EllisLab/CodeIgniter/issues/1344

答案 1 :(得分:1)

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

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

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

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