7

我已经完成了谷歌尽职调查,但找不到明确的答案。所以,堆栈溢出的好人......

如果在 Rails 3 应用程序中,我没有使用 cookie 来存储会话,那么安全管理“Application.config.secret_token”是否重要?此外,它完全被使用了吗?

4

2 回答 2

6

secret_token 由 cookie_store 使用,用于客户端存储会话数据。 是一篇很好的文章,介绍了如何使用已知的 secret_token 执行任意代码。

cookie_store更准确地说,这是ActionDispatch::Session::CookieStore一个机架中间件,它可以在您设置时将加载到您的机架堆栈中session_store(:cookie_store)。因此,如果您将其设置为:session_store您应该可以不设置 secret_token。

您可以检查Rails.configuration.middleware以查看所有中间件并确认ActionDispatch::Session::CookieStore不是其中之一。

FWIW,rails 3.2 应用程序将以secret_token未设置开始,但尝试设置会话变量的请求将失败 500。我还没有准确追踪失败发生的位置。

但是,如果您没有设置 secret_token,并且您ActionDispatch::Session::CookieStore的机架堆栈中没有,并且您的应用程序似乎可以运行,那么您可以免受该特定攻击。

另一个用途secret_token摘要认证

总之,要回答这个问题,如果您不使用摘要身份验证,并且不使用 cookie_store(例如,通过设置session_store(:cache_store)),那么secret_token并不重要。

于 2013-09-04T20:52:40.527 回答
0

Application.config.secret_token也用于 HTTP 基本和摘要访问身份验证。

Rais 3.2 HTTP 基本和摘要访问认证源文件

基本和摘要访问身份验证 RFC

于 2013-08-31T01:54:44.237 回答