我已经完成了谷歌尽职调查,但找不到明确的答案。所以,堆栈溢出的好人......
如果在 Rails 3 应用程序中,我没有使用 cookie 来存储会话,那么安全管理“Application.config.secret_token”是否重要?此外,它完全被使用了吗?
我已经完成了谷歌尽职调查,但找不到明确的答案。所以,堆栈溢出的好人......
如果在 Rails 3 应用程序中,我没有使用 cookie 来存储会话,那么安全管理“Application.config.secret_token”是否重要?此外,它完全被使用了吗?
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
并不重要。