使用redis-rails作为会话存储是否安全?

时间:2017-09-10 18:47:19

标签: ruby-on-rails session-cookies redis-rails

当用作会话存储时,我注意到redis-rails将会话ID以未加密的格式保存在cookie中。不应该将会话ID视为安全信息,不会在未加密的cookie中公开以阻止会话劫持尝试吗?

1 个答案:

答案 0 :(得分:1)

会话标识符cookie是将客户端链接到会话的唯一(体面)方式。客户必须有某种声明,他们可以将这些声明与请求一起传递,以便我们可以识别它们。

无论您使用的是CookieStore,Redis,ActiveRecord还是memcached,都适用。

使用固定盐或不加盐加密会话标识符绝对不会浪费时间,因为攻击者无论如何都可以在中间人或XSS攻击中访问cookie。

如果您使用了盐,则必须将其链接到用户。现在你有两个问题,而不是一个。

虽然您可以使用一些新颖的方法,例如使用用户代理,ip或其他任何您认为您了解客户端的方法,但安全性优势很少。

正如@pvg所说:

  

会话ID只需要是随机的,不可预测的并且足够   大。

保护会话的有意义的方法是:

  • 使用https来阻止中间人攻击。
  • 在用户登录和注销时调用reset_session以避免会话固定。
  • 清理用户输入以避免XSS。