Хранение зашифрованного файла cookie с помощью Rails

Мне нужно сохранить небольшой фрагмент данных (менее 10 символов) в файле cookie в Rails, и мне нужно, чтобы он быть в безопасности. Я не хочу, чтобы кто-либо мог читать этот фрагмент данных или вводить свой собственный фрагмент данных (поскольку это открыло бы приложение для многих видов атак). Я думаю, что лучше всего зашифровать содержимое файла cookie (следует ли мне его также подписать?). Как лучше всего это сделать?

Прямо сейчас я делаю это, что выглядит безопасным, но многие вещи казались безопасными для людей, которые знали о безопасности намного больше, чем я, а затем выяснилось, что это было небезопасно .

Я сохраняю секрет таким образом:

encryptor = ActiveSupport::MessageEncryptor.new(Example::Application.config.secret_token)
cookies[:secret] = {
  :value => encryptor.encrypt(secret),
  :domain => "example.com",
  :secure => !(Rails.env.test? || Rails.env.development?)
}

, а затем читаю его так:

encryptor = ActiveSupport::MessageEncryptor.new(Example::Application.config.secret_token)
secret = encryptor.decrypt(cookies[:secret])

Это безопасно? Есть ли лучшие способы сделать это?

Обновление : Я знаю о сеансе Rails и о том, насколько он безопасен, как путем подписания файла cookie, так и, при необходимости, сохранения содержимого серверной части сеанса, и я действительно использую сеанс для для чего это нужно. Но мой вопрос здесь о хранении cookie, части информации, которую я не хочу в сеансе, но мне все еще нужно, чтобы она была в безопасности.

8
задан pupeno 21 February 2012 в 10:05
поделиться