Недавние уязвимости в rails (особенно те, которые касаются стойки) заставили меня задуматься о том, насколько безопасным был подход Marshal.load
, который я изначально рекомендовал.
Пожалуйста, не используйте is, поскольку это опасно, и потенциально может разрешить удаленное выполнение кода . Я удалил его из этого ответа.
Хотя это не так гибко, должно работать и следующее:
Исходный объект:
my_object = {:k1 => 'v1', :k2 => 'v2'}
Сохранение:
cookies[:my_data] = {
:value => my_object.to_json,
:expires => 4.years.from_now
}
Чтение:
my_object = JSON.parse(cookies[:my_data])