【问题标题】:random ActionController::InvalidAuthenticityToken in my rails app我的 Rails 应用程序中的随机 ActionController::InvalidAuthenticityToken
【发布时间】:2019-11-14 21:44:00
【问题描述】:

ActionController::InvalidAuthenticityToken 在我的应用程序中出现随机 CSRF 错误。比如,100 个请求中的一个或更多。为什么这些错误会像这样随机出现?

我在一些常规的<%= form_with %> 标签上找到了它们,一些在 javascript 帖子上(但它大部分时间都有效,因为我每次都将meta[name='csrf-token'] 添加为X-CSRF-TOKEN),一些在devise/registrations#create 上,等等。 .

为什么有时会发生,而不是每次?

问候

【问题讨论】:

  • 你们服务 https 吗?
  • @DileepNandanam 是的 tls 1.2,大部分时间对每个人来说一切都很好,只是随机有时它不起作用。也许令牌在某处失效。
  • 看看有没有proxy_set_header X-Forwarded-Proto $scheme;在位置部分。
  • 没有:/但感谢您的帮助
  • 在对请求进行撬动之前尝试添加它

标签: ruby-on-rails csrf


【解决方案1】:

当 Rails 会话过期时,CSRF 令牌将过期(某些配置除外)。

这是一个引发此错误的场景:

如果用户在页面上显示了一个表单,然后离开几十分钟(取决于会话持续时间),然后回来填写表单,则会话(和令牌)可能已过期。然后在提交时 Rails 会引发InvalidAuthenticityToken 错误。

更多关于这里Rails CSRF Tokens - Do they expire?

另一种情况涉及(坏)机器人:机器人可以在不使用令牌的情况下提交表单。

【讨论】:

    猜你喜欢
    • 2018-11-02
    • 2019-06-23
    • 2017-11-13
    • 2015-05-21
    • 2018-11-27
    • 2015-01-10
    • 2014-05-11
    • 2015-11-23
    • 1970-01-01
    相关资源
    最近更新 更多