【发布时间】:2015-06-25 11:18:27
【问题描述】:
关于 Rails 中使用 CookieStore 的会话,如果我有两台服务器具有相同的 Rails 应用程序并且配置方式相同(哈希和配置相同),我知道如果一个用户点击第一台服务器并启动会话,那么如果下一个请求到达第二台服务器,则应用程序将正常工作。现在没关系。
但是,关于表单和authenticity_token,你如何处理(防止CSRF)?
假设我有一个 Cookie 哈希会话(使用 CookieStore),它使用客户端(浏览器)中的 Cookie 存储。所以服务器端根本不使用会话。
因此,如果我从服务器 1 生成一个authenticity_token,然后下一个请求(来自表单的 POST)到达服务器 2,该请求将被拒绝并抛出错误或 rails 异常。
你如何处理这个问题?共享内存中的authentity_tokens或使用“中间件”软件,例如Redis键值存储,以便每个服务器都可以验证authentity_tokens?
谢谢!
【问题讨论】:
-
您是否真的尝试过并收到错误,或者这只是一个假设? CSRF 令牌基于当前会话,并且由于会话信息存储在 cookie 中,它应该可以跨多个服务器工作。
标签: ruby-on-rails session cookies