Что такое использование базы секретных ключей в 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 каждый раз, когда я создать?
как он защищает приложение с другими серверами?
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.rbYourAppName::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,
- если ваше приложение называется
Helloи- установить
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