首页 > 解决方案 > Rails 5 - 无法验证 CSRF 令牌的真实性 - 只有有时

问题描述

我有一个 Rails 5 应用程序,并且正在使用表单提交数据。我正在使用 CSRF 保护,表单会生成一个隐藏字段'authenticity_token'。效果很好!

但有时用户会得到错误'Can't verify CSRF token authenticity'。我想知道为什么会这样?我只能想象用户禁用了 cookie。但是哪个普通的互联网用户会这样做?还有其他原因吗?

我无法在我的计算机上重现此错误。所以我唯一的解决方案是禁用 CSRF 保护,这不是我真正想做的。

有任何想法吗?

标签: ruby-on-rails

解决方案


Can't verify CSRF token authenticity结果500 Internal Server

我想知道为什么会这样?我只能想象用户禁用了 cookie。但是哪个普通的互联网用户会这样做?还有其他原因吗?

是的,这会发生。或者用户(或黑客)尝试向端点发出 API 请求,因为它无法验证真实性令牌,所以会抛出此错误。普通用户不会这样做,但也许有人重视他们的隐私并可能会关闭这些设置,或者他们可能想使用 Tor 浏览器等等。作为开发人员,我们所能做的就是努力为最终用户提供最佳体验。


因此,更好的做法是500 Internal Server使用一些自定义消息捕获错误,然后将其显示给最终用户,同时将其发送Stack trace给您自己(松弛通知等),以便您可以在这是一个关键问题时进行处理。

这样,如果从用户端一切都好,这将正常工作。但如果有人禁用 cookie(或任何导致错误的东西),您可以显示有关该问题的自定义消息。


推荐阅读