Rails 5-无法验证CSRF令牌的真实性-仅在某些情况下

时间:2019-10-11 21:06:50

标签: ruby-on-rails

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

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

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

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

Can't verify CSRF token authenticity产生500 Internal Server

  

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

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


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

这样,如果从用户的角度来看一切都很好,那么它将正常运行。但是,如果有人禁用Cookie(或任何会导致错误的内容),则可以显示有关此问题的自定义消息。