Ruby on Rails 3.2.13 - Brakeman - Секрет сессии не должен быть включен в контроль версий
Я установил последнюю версию драгоценного камня Brakeman, чтобы помочь мне с безопасностью приложений Rails.
У меня есть несколько приложений Rails, которые у меня есть на двух серверах, одно для разработки, а другое для производства. Когда я запускал отчеты о тормозах своих приложений, большинство из них помечали config/initializers/secret_token.rb со следующей уязвимостью с высокой степенью безопасности.
Session secret should not be included in version control near line 7
Это первый раз, когда я вижу эту ошибку, так как я запускал более старую версию Brakeman несколько месяцев назад.
Из того, что я исследовал до сих пор, Rails автоматически генерирует секретный токен, когда rails выполняет новое имя приложения. Я не знал об этом до сих пор. Очевидно, Rails не защищает этот файл, и если я решу переместить любое из моих приложений на Github, эта информация будет доступна любому пользователю Github, имеющему доступ к приложению. В настоящее время я не загружаю файлы на GitHub, но мне нужна информация о том, как переместить secure_token из config/initializers/secret_token.rb, чтобы закрыть дыру в безопасности моих приложений.
В одном сообщении в блоге, которое я прочитал, предлагалось ввести секретный токен в переменную ENV. Решит ли проблему перемещение оператора из config/initializers/secret_token.rb в config/environment.rb? Если это так, я добавлю эту задачу в свой список задач в разработке Rails.
Любая помощь будет оценена.
2 ответа
Это конкретное сообщение в "Бормман" было для меня замолчать, когда я поместил секретную информацию в ENV
переменные, как вы упомянули. Лично я люблю использовать драгоценный камень Figaro для этого, но я думаю, что dotenv также популярен.
Вот некоторые другие ресурсы, которые могут вас заинтересовать:
- Запись в блоге Code Climate: Rails Небезопасные настройки по умолчанию в блоге Code Climate
- Поток Stackru: Что следует удалить из общедоступного управления исходными кодами в Ruby on Rails?
Я не уверен, как переместить секрет сеанса в другой файл будет иметь значение. По сути, секретный токен должен рассматриваться как пароль.
В этом сообщении от Phusion рассматриваются несколько различных вариантов предоставления ключа сеанса во время развертывания.