Php 为什么CodeIgniter在其中存储了这么多数据';饼干是什么?

Php 为什么CodeIgniter在其中存储了这么多数据';饼干是什么?,php,codeigniter,cookies,Php,Codeigniter,Cookies,我已设置在数据库中存储会话,但它仍然坚持在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:1336

我已设置在数据库中存储会话,但它仍然坚持在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

所有这些都在
默认会话中
所以我不知道为什么它也在cookie中!我之所以这样问是因为欧盟新的cookie立法关于用户可识别数据的本地存储。我不完全确定这是否属于立法范围,但问题已经提出。

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


编辑:

我确信这与CI会话类和您可以设置的首选项有关

当脚本检查cookie的有效性时,它(可能)根据输入类中的当前用户代理数据检查IP地址和UA字符串,而不管您是否使用DB会话(在
sess\u read()
中)来验证cookie。如果您使用的是DB,它还会根据cookie数据检查DB数据

该脚本这样做是为了防止黑客企图——理论上,有人可以猜测或嗅探正确的会话id、IP地址或UA字符串,但这三者都要困难得多


这里有更多

你担心得太多了。几乎世界上的每个网站都这样做。这与PyroCMS无关,而是CI的工作方式。请修改您的问题,我和@narfbg将与其他CodeIgniter开发人员讨论。这并不能解释为什么它存储在本地机器上,可以在服务器上完成,只需在cookie中存储会话id,就像本机php会话doYes一样,脚本会将cookie与UA详细信息和DB进行比较。不过,我看不出会话中存储的UA详细信息(等)之间有什么区别。是的,就像我说的,它会根据UA详细信息验证cookie。这可能是杀伤力过大,因为您可以针对数据库执行此操作,但是您可以为提高安全性所做的任何事情都可能是值得的。cookie中的信息与数据库中的信息相同。UA的详细信息也可以与数据库中的详细信息进行比较,而不是将其全部放在cookie中。