Когда использовать cookie store против redis store для сессии cookie - PullRequest
0 голосов
/ 26 апреля 2018

В 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',
)

Когда мы должны использовать магазин печенья и когда мы должны использовать базу данных?

Ответы [ 2 ]

0 голосов
/ 21 ноября 2018
  • Когда вам нужно хранить более 4KB данных в вашем сеансе.

  • Когда вам нужно больше контроля над сроками истечения.Вот два примера, где вам может понадобиться этот вид контроля:

    1. Если вы вносите изменения в свое приложение, которое требует, чтобы новая информация была в сеансе, или есть нарушение безопасности, и вам нужно истечьвсе сеансы, так что всем пользователям необходимо выполнить вход снова, гораздо проще, если сеансы живут в базе данных, по сравнению с необходимостью изменить secret_key_base для аннулирования cookie_store сеансов.
    2. A Поддерживаемый сеанс - это место, где злоумышленник поддерживает сеанс в течение неопределенного времени.Проблема упоминается здесь https://guides.rubyonrails.org/security.html#session-expiry Если вы хотите защитить от Обслуживаемого сеанса , это легко сделать, используя базу данных, установив атрибут created_at в сеансе, а не cookie_storeсеанс, потому что он создается заново с каждым запросом.
0 голосов
/ 26 апреля 2018

Если ваше приложение rails работает в среде кластера (с несколькими серверами) или данные сеанса превышают 4 КБ (хранилище cookie имеет ограничение в 4 КБ памяти), используйте Redis или любую другую базу данных.

...