0

即使我将 CookieStore 配置为:

MyApp::Application.config.session_store :cookie_store, {
  key: '_myapp_session',
  cookie_only: false,
  httponly: false
}

我发出一个 POST 请求

  • _myapp_session = #SOME_SESSION_ID
  • 和authentity_token = #AUTH_TOKEN
  • 和 http-header[ X-CSRF-Token ] 设置为 #AUTH_TOKEN

最后,用户未通过身份验证,并使用新的 AUTH_TOKEN 和会话 ID 创建新会话。

有人可以给我一些建议吗?

4

1 回答 1

0

不幸的是,当前 4.0 分支中不支持此选项。尽管此选项被强制为 TRUE,但我没有在使用此选项的 rails 源代码中找到任何代码。

使独立的 POST 请求工作的方法是创建专用的中间件,该中间件将添加适当的会话 cookie。它必须插入适当的位置,因为中间件的顺序很重要。

因为它在 CSRF 安全方面非常危险,所以我们必须在中间件中添加相同的验证,这会将潜在风险降到最低。

于 2013-11-06T16:31:53.360 回答