ruby-on-rails - 片段缓存和 CSRF

标签 ruby-on-rails

处理缓存表单和 CSRF token 的首选方法是什么? Here他们建议对输入属性进行 JS 覆盖,但我也想缓存 header 。

最佳答案

这是一篇描述不同方法的文章:http://www.fastly.com/blog/Caching-the-Uncacheable-CSRF-security/ .

简短摘要:

  • 使用 ESI(Edge Side Includes):在 Rails 中渲染一个占位符,稍后用 CSRF token 填充该占位符。
  • 在 cookie 中包含 CSRF token 并通过 javascript 将其复制到表单中。
  • 在单独的 AJAX 请求中获取 token 并通过 javascript 将其复制到表单中。

  • 我的看法:

    你需要设置特殊的基础设施来使用 ESI,所以我不喜欢那个解决方案。 AJAX 请求很慢而且网络开销很大,所以我也不喜欢那个解决方案......
    所以我会选择 cookie 解决方案或您已经提到的 JS 解决方案,因为这些是最简单的解决方案。

    关于ruby-on-rails - 片段缓存和 CSRF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26968003/

    相关文章:

    ruby-on-rails - 什么时候需要在 Rails Gemfile 中使用 require?

    ruby-on-rails - 在 form_tag 中加载数据而不刷新 Rails 4 中的页面

    ruby-on-rails - 带 html 和 erb 的 Rails 助手

    javascript - 在 Rails 中创建站点徽章或小部件 : Problem calling the second script

    ruby-on-rails - ruby on rails : ratyrate on rails 5? 迁移错误中止

    ruby-on-rails - rails 发行说明或变更日志在哪里

    ruby-on-rails - Redis 对象 - 从数据库中获取所有对象 - 配置文件 View 计数器

    javascript - Rails 4/AJAX 从 Controller 获取数据

    ruby-on-rails - find_or_create_by 多个属性在belongs_to 对象的上下文中调用时找不到记录(2.3.11 中的AR 错误?)

    ruby-on-rails - 如何让Ajax微调器显示在特定页面上?