我已完成谷歌尽职调查,无法找到明确的答案。所以,好的堆栈溢出...
如果在rails 3应用程序中,我没有使用cookie来存储会话,那么安全地管理“Application.config.secret_token”是否重要?此外,它一直在使用吗?
答案 0 :(得分:6)
secret_token由cookie_store使用,用于存储会话数据客户端。 Here是如何使用已知的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
的另一个用途是digest authentication。
总之,要回答这个问题,如果您没有使用摘要式身份验证,并且不使用cookie_store(例如,通过设置session_store(:cache_store)
),则secret_token
并不重要。< / p>
答案 1 :(得分:0)
Application.config.secret_token
也用于HTTP基本和摘要访问身份验证。
Rais 3.2 HTTP Basic and Digest Access Authentication source file