使用“低”安全性在cakephp中有什么影响?

7
当我从外部网站提交凭据时,cakephp出现了身份验证问题,身份验证会起作用,然后立即丢失,网站提示重新登录。这位用户发现cakephp会话cookie在更改。他的解决方案是将安全性设置为低。

似乎在中等或高安全性下,Cake会对引用者进行双重检查...但是在安全性较低时,从hotmail或yahoo等外部网站点击受保护的链接时可以正常工作。

这个解决方案对我也起作用了,但是将cakephp设置为“低”安全性会失去什么?
4个回答

7
当安全级别较高时,每次请求都会生成一个新的会话ID。在这种情况下,通过共享会话cookie创建两个应用程序之间的单点登录解决方案几乎是不可能的,因为Cake会不断更改会话ID而不通知另一个应用程序。
当安全级别中等(或更高)时,启用session.referer_check
当安全级别较低时,您没有上述任何功能,但它仍然与任何普通的PHP网站/CMS一样安全。

当安全设置为低时,还有其他被关闭的东西吗? - Jack B Nimble
不,除了会话超时更改之外,只有这两个功能被禁用。请参见此处:http://book.cakephp.org/view/44/CakePHP-Core-Configuration-Variables - deizel.

2
我所知道的主要是会话超时,根据app/config/core.php中的注释,您的会话超时时间将乘以较低的数字。
这本书支持此观点,
引用: CakePHP安全级别。根据此处的设置,“Session.timeout”中定义的会话超时时间将乘以指定值。
有效值: 'high'= x 10 'medium'= x 100 'low'= 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引荐者的子字符串。如果客户端发送了引荐者并且未找到子字符串,则嵌入的会话ID将被标记为无效。默认为空字符串。
因此,看起来您失去的东西是准确确定正在处理哪些会话和哪些人。
我遇到了类似于丢失会话的问题,并且许多答案都指向使用$this->requestAction(),因为它基本上会从应用程序中卷起一个请求,因此它看起来像是创建了另一个具有高安全性的会话。
许多谷歌答案提出的另一件事是在您的app/config/core.php中关闭Session.checkAgent,因为这意味着将不会检查会话。这至少防止我在页面请求之间丢失会话信息。
:)

1
对于任何在谷歌上搜索此问题的人,Session.timeout 值在最近版本的 Cake(可能是 2.0 或 2.1 及以后的版本)中不会被乘以。 - Simon East
澄清一下,requestAction()通过标准请求处理逻辑以编程方式执行操作,就像它是一个真实的请求一样。不使用curl等工具。 - Brad Koch

1

将等级设置为“低”时会发生两件事情:

1)超时时间变长

2)如果会话劫持容易发生,那么它会变得更加容易! 因为在请求之间不像设置为“高”时会重新生成会话!

除此之外没有其他影响。

顺便说一句,您可以针对特定页面更改安全级别或会话超时时间或两者都更改...因此这不是一个不可逆的选择


0

我相信将其设置为低的唯一影响是会将会话时间乘以300,而不是高和中分别乘以10或100,以及你遇到问题的会话引用检查。

更新: 如果您先前将其设置为高,则还将丢失请求之间的会话ID重新生成。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接