Что такое использование базы секретных ключей в rails 4



Я новичок в Rails 4, и не понимаю использование secret_key_base под config/secrets.yml в рельсах 4. Не могли бы вы объяснить эту концепцию?



кроме того, когда я работаю в производственной среде, мне предлагается установить secret_key С devise.rb,config.secret_key и secret_key_base. Тем не менее, я могу создать новый секрет с помощью .



в чем разница между средой разработки и производственной средой?



как он соответствует вновь сгенерированным secret_key когда я добавляю его с secret_key_base каждый раз, когда я создать?



как он защищает приложение с другими серверами?

584   2  

2 ответов:

The secret_token.rb содержимое файла содержит длинную рандомизированную строку , который используется для проверки целостности подписанного печенье (например, сеансы пользователей, когда люди вошли в ваше веб-приложение).

документация говорит:

используйте существующую secret_key_base из secret_token.rb инициализатор чтобы задать переменную среды SECRET_KEY_BASE для любого пользователя запустите приложение Rails в рабочем режиме. Кроме того, вы можете просто скопировать существующую secret_key_base из secret_token.rb инициализатор для секретов.yml в разделе Производство, замена <%= ENV["SECRET_KEY_BASE"] %>.

так как это важный файл, и вы не можете поставить его на .гитюдного, это лечится, что это хорошая практика, чтобы использовать env переменную в магазине secret_key_base значение:

создать .env или .powenv файл и хранить его как:

export SECRET_TOKEN="9489b3eee4eccf317ed77407553e8adc97baca7c74dc7ee33cd93e4c8b69477eea66eaedeb18af0be2679887c7c69c0a28c0fded0a71ea472a8c4laalal19cb"

а потом в config/initializers/secret_token.rb

YourAppName::Application.config.secret_key_base = if Rails.env.development? or Rails.env.test? # generate simple key for test and development environments
  ('a' * 30) # should be at least 30 chars long
else
  ENV['SECRET_TOKEN']
end

этот статья (немного старый и) длинный, но действительно полный полезной информации по этой теме.


обновление 04.05.15

начиная с рельсов 4.2 больше нет . По новой конвенции есть config/secrets.yml файл, предназначенный для хранения секретов приложения.

прочитать о том, как обновить существующее приложение 4.2.х по инновациям.


технически цель secrect_key_base это должно быть секретом вход для приложения key_generator способ (проверьте Rails.application.key_generator).

приложения key_generator и так secret_key_base, используются три основные функции в рамках Rails:

  • получение ключей для зашифрованных файлов cookie, которые доступны через cookies.encrypted.
  • получение ключа для подписанных файлов cookie HMAC, которые являются доступно через cookies.signed.
  • получение ключей для всех приложение называется message_verifier экземпляры.

Проверьте больше на каждом из трех в статья @michaeljcoyne.

secret_key_base используется для шифрования и подписи сессии

для того, чтобы безопасно отправлять сессии туда и обратно в cookies


In рельсы 4,

  1. если ваше приложение называется Hello и
  2. установить session['a'] = 'b',

ваш cookie будет выглядеть примерно так:

_Hello_session=BAh7B0kiD3%3D%3D--dc40a55cd52fe32bb3b84ae0608956dfb5824689

что означает:

_Hello_session=<encrypted a=b>--<digital signature>

Cookies устанавливаются сервером и хранятся на стороне клиента, с повторной браузера куки на сервер каждый раз, когда мы запрашиваем страницу.

чтобы злые люди не понимали a=b строка это зашифрованные.
Чтобы предотвратить злых людей от подделки печенья,цифровая подпись это.

в обоих случаях secret_key_base используется значение (для шифрования / дешифрования a=b и проверки цифровой подписи).

Comments

    Ничего не найдено.