【发布时间】:2011-06-19 08:02:12
【问题描述】:
我正在使用 CakePHP 制作一个需要相当安全的系统,因为我们正在处理金钱、客户的帐户等。到目前为止,一切都运行良好,直到我不得不与一个支付平台集成我需要重定向到他们的网站,然后他们重定向回我的网站。
这在我的开发机器(调试 = 2)中运行良好,但在生产中,当客户被重定向回来时,他会收到登录提示,而不是回到他的“登录区域”。经过大量挖掘,我发现这是因为 CakePHP 设置了 session.referer_check,如果 HTTP_REFERER 来自我以外的其他主机,这会使会话无效。
现在,通常情况下,我会毫不犹豫地禁用它,但在这个系统中,我比平时更关心安全性。
我的问题是 session.referer_check 究竟应该保护我免受什么影响?
如果我关闭它,会对我的网站进行什么样的攻击/利用/坏事?
我猜这肯定是有原因的,但我无法想象它会保护我免受什么伤害。
你能给我一些想法吗?
禁用它是否安全?
谢谢
丹尼尔
【问题讨论】:
-
您是否 100% 是在检查引荐来源网址,而不是在先前请求中与表单一起发送的令牌以防止 CSRF?
-
100% 确定。 CakePHP 没有检查引荐来源网址,它只是打开了referer_check(检查引荐来源网址本身的 PHP 功能:php.net/manual/en/…) - 另外,我看到的结果是让人们注销。当 CakePHP 不喜欢它获得的 CSRF 令牌(或者当它没有获得)时,CakePHP 所做的就是“黑洞”(基本上是空白页面)