У меня есть приложение направляющих, которое это запускало живой в течение некоторого времени, и я планирую на открытый исходный код его в ближайшем будущем. Я задаюсь вопросом, как опасный это должно оставить секрет хранилища сеансового ключа в управлении исходным кодом, в то время как приложение является работающим.
Если опасно, как люди обычно решают эту проблему? Я предположил бы, что является самым легким просто переместить строку в текстовый файл, это проигнорировано SCM, и считайте его в позже.
Только для ясности, я говорю об этом:
# Your secret key for verifying cookie session data integrity.
# If you change this key, all old sessions will become invalid!
# Make sure the secret is at least 30 characters and all random,
# no regular words or you'll be exposed to dictionary attacks.
ActionController::Base.session = {
:key => '_application_session',
:secret => '(long, unique string)'
}
И в то время как мы находимся на предмете, есть ли что-либо еще в приложении для направляющих по умолчанию, которое должно быть защищено когда открытое определение источника работающего приложения?
Переверните вопрос. Вы бы повторно использовали секретный ключ из чужого проекта, который вы только что скачали? Вероятно, нет, и другие умные пользователи вашего кода тоже не будут. В этом случае злоумышленники получат ключ, который можно использовать для атаки на ваш основной сайт, а также против любых пользователей, достаточно ленивых, чтобы не изменить ключ.
Другие файлы конфигурации, которые могут быть недоступны для совместного использования, включают database.yml, s3.yml, amazon_s3.yml и т. Д. раскройте свой код всему миру.
Я бы поместил это в config. Возможно, вам понадобится g в любом случае, так почему бы вам не поместить его туда и добавить комментарий, что это должно быть изменено, когда пользователь устанавливает программное обеспечение.