什么是PHP的session.referer_check保护我?

Dan*_*ola 27 php security cakephp

我正在制作一个需要相当安全的CakePHP系统,因为我们处理的是钱,客户账户等.到目前为止,一切都很好,直到我必须与我需要的支付平台集成重定向到他们的网站,他们重定向回我的网站.

这在我的开发机器(debug = 2)中工作正常,但在生产中,当客户被重定向回来时,他得到登录提示而不是回到他的"登录区域".经过多次挖掘后我发现这是因为CakePHP设置了session.referer_check,如果HTTP_REFERER来自另一个主机而不是我的,则会使会话无效.

现在,通常情况下,我会毫不犹豫地禁用它,但在这个系统中我更关注安全性而不是正常情况.

我的问题是session.referer_check究竟应该保护我什么?
如果我将其关闭,我的网站可以进行什么样的攻击/利用/坏事?

我猜这里存在一些原因,但是我无法想象它会保护我什么.

你能给我任何想法吗?
安全禁用吗?

谢谢
Daniel

roo*_*ook 23

这是为Session Fixation和CSRF/XSRF 提供有限的保护.检查引用是停止xsrf的有效方法.阻止会话固定的更好方法是 Session.use_only_cookies,因为黑客无法在受害者浏览器上为他尚未控制的域设置cookie.

但是,Session.referer_check 很容易绕过. 它只是在referer域中寻找一个子字符串.如果子字符串一起丢失,如果原始URL是https://则会发生这种情况,那么会话ID将无效.但是,因为它的子字符串而不是完整的字符串,那么你可以www.somedomain.com 通过引用来绕过它www.somedomain.com.some_hacker.com.简而言之,我认为这完全没用.