【问题标题】:CakePHP 3.0.4 and Invalid CSRF tokenCakePHP 3.0.4 和无效的 CSRF 令牌
【发布时间】: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


【解决方案1】:

Csrf 组件中的secure 标志意味着只有在使用 https(安全)连接时才会设置 cookie。如果表单不是通过 https 生成和提交的,那么它将阻止尝试

【讨论】:

  • 好的,这就是它失败的原因......我仍在开发我的应用程序并且没有 https。我认为这应该在 csrf 组件的文档中更清楚地解释......无论如何,非常感谢!
猜你喜欢
  • 1970-01-01
  • 2017-07-29
  • 2020-01-02
  • 2017-07-15
  • 1970-01-01
  • 2018-05-12
  • 2019-09-05
  • 2022-08-16
  • 1970-01-01
相关资源
最近更新 更多