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

Is it secure to use redis-rails as session store?

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

没有

会话标识符 cookie 是 link 客户端进入会话的唯一(合适的)方式。客户必须有某种声明,他们可以将其与请求一起传递,以便我们可以识别他们。

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

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

如果您使用盐,您也必须 link 向用户提供。现在你有两个问题而不是一个。

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

正如@pvg 所说:

Session id's merely have to be random, unpredictable and sufficiently large.

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

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