【问题标题】:Rails csrf protection fails sometimesRails csrf 保护有时会失败
【发布时间】:2014-07-31 18:34:17
【问题描述】:

我有一个带有 ajax 调用和 jquery-rails gem 的 Rails 4 应用程序。 有时 ajax 调用的 csrf 保护失败。

我自己从未遇到过这个问题,但有些用户遇到过。其中一个给我发了截图和页面的源代码——JS控制台没有错误;页面上呈现的 csrf 元标记。

我真的不知道是什么导致了这个问题以及如何调试它。你能帮帮我吗?

【问题讨论】:

  • 如果您认为自己在 Rails 中遇到了错误,请转到他们的 github 页面并提交报告 github.com/rails/rails/issues
  • 还让用户指定他们正在使用的浏览器,他们如何到达页面(确保他们没有标记表单,并且正在加载缓存版本)
  • @ReggieB,页面未缓存且未添加书签。但用户说,他在 Chrome 中使用了隐身标签,而我使用默认的 cokie 商店。会不会造成问题? @Iceman,我不认为这是 rails 中的错误 - 在我的应用程序中没有什么特别之处。
  • 如果这是问题的原因,我会感到惊讶,但我认为您必须自己在 Chrome 隐身标签中测试应用程序,以确保它不是这种环境的怪癖。
  • 还请查看日志并查看该用户提交表单时发布的参数中是否传递了authentity_token。您可能需要更改服务器上的日志记录级别才能看到这一点。

标签: ruby-on-rails csrf


【解决方案1】:

X-CSRF-Token header chrome incognito 的 google 查询返回了一些有趣的结果。

特别是看"I Saw An Extremely Subtle Bug Today And I Just Have To Tell Someone"

正如@sevenseacat 所指出的,这是一篇关于 Rails 2 代码的旧文章,但是症状非常相似,我想知道根本原因是否相同 - 偶尔会结束会话,这会使 CSRF 无效。另外,这个问题可能是在认知模式下使用 Chrome 造成的。

总之,间歇性会话丢失会导致细微的 CSRF 错误。

【讨论】:

  • 它很有趣,但它也是一篇关于 Rails 2.3 三年前的文章 - 从那时起功能发生了变化。
  • 我知道,但症状似乎太相似而无法忽略。我认为确切的原因不会相同。我将更新“答案”以反映我认为最有趣的内容。
猜你喜欢
  • 2019-04-10
  • 2016-05-23
  • 2010-12-22
  • 1970-01-01
  • 2014-02-25
  • 2011-06-27
  • 2019-05-16
  • 2013-04-15
  • 1970-01-01
相关资源
最近更新 更多