何时将Cookie Store vs Redis商店用于会话cookie



在Rails中,存储session的默认值是使用cookie_store

Application.config.session_store :cookie_store, key: '_myapp_session'

但是有时,session存储在数据库中,例如Redis。

Application.config.session_store(
  :redis_store,
  servers: config.redis_server,
  key: '_myapp_sessions',
)

我们什么时候应该使用cookie商店,什么时候应该使用数据库?

  • 当您需要在会话中存储数据超过 4KB

  • 当您需要更多地控制到期会议时。这是您可能需要这种控制的两个示例:

    1. 如果您更改需要在会话中需要新信息的应用程序或有安全漏洞,并且您需要过期所有会话,以便所有用户都需要再次登录,那么如果会话会更容易活在数据库与需要更改secret_key_base以使cookie_store会话无效的数据库中。
    2. A 维护的会话是攻击者无限期地将会话保持活力的地方。这里提到了这个问题https://guides.rubyonrails.org/security.html#session-dexpiry,如果您想防止维护的会话通过设置 created_at attribute,可以轻松地使用数据库来完成此操作。在会话中而不是cookie_store会话中,因为它会通过每个请求重新创建。

如果您在群集(多个服务器(环境或会话数据上运行的导轨应用超过4KB(Cookie Store的限制为4KB内存(,然后使用REDIS或任何其他数据库。

最新更新