当用作会话存储时,我注意到redis-rails将会话ID以未加密的格式保存在cookie中。不应该将会话ID视为安全信息,不会在未加密的cookie中公开以阻止会话劫持尝试吗?
答案 0 :(得分:1)
否强>
会话标识符cookie是将客户端链接到会话的唯一(体面)方式。客户必须有某种声明,他们可以将这些声明与请求一起传递,以便我们可以识别它们。
无论您使用的是CookieStore,Redis,ActiveRecord还是memcached,都适用。
使用固定盐或不加盐加密会话标识符绝对不会浪费时间,因为攻击者无论如何都可以在中间人或XSS攻击中访问cookie。
如果您使用了盐,则必须将其链接到用户。现在你有两个问题,而不是一个。
虽然您可以使用一些新颖的方法,例如使用用户代理,ip或其他任何您认为您了解客户端的方法,但安全性优势很少。
正如@pvg所说:
会话ID只需要是随机的,不可预测的并且足够 大。
保护会话的有意义的方法是:
reset_session
以避免会话固定。