我在cakephp中遇到了身份验证问题,当从外部站点提供凭据时,身份验证可以正常工作,然后立即丢失,并且站点再次提示登录信息。
This guy确定cakephp会话cookie正在改变。他的解决方案是将安全性设置为低。
似乎在中等或高安全性蛋糕进行双重检查 引用...但安全性较低时,单击auth-时工作正常 来自外部网站的受保护链接,如hotmail或yahoo
这个解决方案对我有用,但是我将cakephp设置为'低'安全性会让我失去什么?
答案 0 :(得分:7)
当安全性很高时,会在每个请求上生成新的会话ID。在这种情况下,通过共享会话cookie几乎不可能在两个应用程序之间创建单点登录解决方案,因为Cake会不断更改会话ID而不通知其他应用程序。
当安全性为中等(或更高)时,session.referer_check已启用。
当安全性较低时,您没有上述任何一项功能,但它仍然与任何普通的PHP网站/ CMS一样安全。
答案 1 :(得分:2)
我知道的主要是会话超时,根据app / config / core.php注释,你的会话超时将乘以较低的数字。
这本书支持了这一点,
CakePHP安全级别。 “Session.timeout”中定义的会话超时时间将根据此处的设置进行相乘。 有效值: 'high'= x 10 'medium'= x 100 '低'= x 300 'high'和'medium'也启用session.referer_check 如果'Security.level'设置为'high',CakePHP会话ID也会在请求之间重新生成。
参考:http://book.cakephp.org/view/44/CakePHP-Core-Configuration-Variables
所以另一件事看起来是推荐人检查。
session.referer_check包含要检查每个HTTP Referer的子字符串。如果客户端发送了Referer并且未找到子字符串,则嵌入的会话ID将被标记为无效。默认为空字符串。
所以它的外观,你失去的东西是能够准确地确定你正在处理谁和哪些会话。
我遇到了丢失会话的类似问题,许多答案指向使用$ this-> requestAction(),因为它基本上会将请求从应用程序中卷起,因此它看起来像是另一个创建的会话高安全
许多google答案引发的另一件事是关闭app / config / core.php中的Session.checkAgent,因为这意味着不会检查会话。这至少阻止了我在页面请求之间丢失会话信息。
:)
答案 2 :(得分:1)
设置为“低”时会发生两件事
1)超时更大
2)如果会话劫持很容易,那么它会更容易!因为会话在请求之间重新生成,因为设置为'high'!
,别无其他。
顺便说一下,你可以为特定页面更改安全级别或会话超时或两者......所以它不是一个不撤消选择
答案 3 :(得分:0)
我认为将此设置为低的唯一后果是会话时间分别乘以300而不是10或100,而会话参考检查您是否遇到问题。
<强>更新强> 如果您以前将此设置设置为高,那么您也会在请求之间的会话ID重新生成时松开。