【发布时间】:2015-05-09 10:13:14
【问题描述】:
自从我昨天更新到最新的 3.0.4 CakePHP 版本后,我遇到了 CSRF 组件的问题。看起来以前的版本有一个安全修复,所以我决定尽快升级,但从那以后我在尝试登录我的应用程序时遇到了这个错误:
Invalid CSRF token.
奇怪的是,我在试图弄清楚发生了什么时看到了一个有趣的行为:
1) 我打开了我的 AppController.php,将 Csrf 组件的安全选项设置为 false,然后我登录 -> 它可以工作
2) 将该选项设置为 true 并再次登录 -> 有效
3) 在 (chrome) 隐身模式下,尝试从那里登录 -> 失败(无效的 CSRF 令牌)
4) 隐身失败后,尝试从-非隐身模式再次登录--> 成功
看着documentation,我认为启用它并使用标准的表单助手就足够了……我还需要别的东西吗?我之前使用的 3.0.2 版本一切正常。
【问题讨论】:
-
我刚刚烘焙了一个新应用程序并执行了此操作,但无法重现您的错误。你认为有什么不同?
-
其实我真的不知道。如果这有帮助,我从 RC1 开始就在开发这个应用程序,并且我一直在更新它直到现在......你认为它可能与我的配置文件之一有关吗?
-
我使用 3.0.4 烘焙了一个新应用程序,合并了我的 src 和 webroot 文件夹,但我面临同样的问题。无论如何,_csrfToken 看起来在 DebugKit 的请求面板中设置正确......这是整个错误:无效的 CSRF 令牌。错误:在此服务器上找不到请求的地址“/sviluppo/users/login”。
-
可能是名为
csrfToken的cookie 未设置或未正确发送回服务器。 -
也许你的方向是对的。实际上,当 csrf 的安全选项设置为 true 时,没有名为 csrfToken 的 cookie。如果我将其设置为 false,则 cookie 就在那里。
标签: csrf cakephp-3.0