Как мне установить флаг HttpOnly для файла cookie в Ruby on Rails
-
09-06-2019 - |
Вопрос
Страница Защита Ваших файлов cookie:HttpOnly объясняет, почему создание файлов cookie HttpOnly - хорошая идея.
Как мне установить это свойство в Ruby on Rails?
Решение
Установите параметр "http_only" в хэше, используемом для установки файла cookie
например ,
cookies["user_name"] = { :value => "david", :httponly => true }
или, в Rails 2:
например ,
cookies["user_name"] = { :value => "david", :http_only => true }
Другие советы
Перечитайте ответ Лори:
Обратите внимание, что опция была переименована из :http_only
Для :httponly
(без подчеркивания) в какой-то момент.
В actionpack 3.0.0, то есть Ruby on Rails 3, все ссылки на :http_only
ушли.
Это на какое-то время сбило меня с толку.
Просто установите для :http_only значение true, как описано в Журнал изменений.
Если у вас есть файл с именем config/session_store.rb, содержащий эту строку (Rails 3 +), то он уже автоматически установлен.config/initializers/session_store.rb
:
# Be sure to restart your server when you modify this file.
Rails.application.config.session_store :cookie_store, key: "_my_application_session"
Также rails позволяет вам установить следующие клавиши:
:истекает - Время, в течение которого истекает срок действия этого файла cookie, как объекта Time.
:безопасный - Передается ли этот файл cookie только на HTTPS-серверы.Значение по умолчанию равно false.
Я также написал патч, который включен в Rails 2.2, который по умолчанию использует сеанс CookieStore как http_only.
К сожалению, сессионные файлы cookie по-прежнему по умолчанию являются обычными файлами cookie.