Безопасность пароля ActionMailer

Действительно ли я являюсь сумасшедшим, или действительно ли это - плохая идея сохранить мое имя пользователя SMTP и пароль для ActionMailer в фактическом (разработка/производство) файл конфигурации? Кажется, что я должен сохранить его зашифрованное место, или в очень минимальном, исключить его из моих Подвижных нажатий.

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

Возможно, я должен сохранить его в своей базе данных как другой пользователь (который уже снабжен зашифрованными паролями), и выберите его программно?

10
задан jefflunt 5 July 2010 в 17:37
поделиться

1 ответ

Используйте файл конфигурации приложения который не хранится в вашем репозитории для хранения конфиденциальной информации. Вот как я это сделал:

  1. Добавьте app_config.yml в каталог config. Его содержимое будет выглядеть так:

    smtp_password: kl240jvfslkr32rKgjlk
    some_other_password: 34hg9r0j0g402jg
    and_so_on: lkn$@gJkjgsFLK4gaj
    
  2. Добавьте preinitializer.rb в каталог config со следующим содержимым:

    require 'yaml'
    APP_CONFIG = YAML.load(File.read(RAILS_ROOT + "/config/app_config.yml"))
    
  3. Замените ваши пароли на значения в переменной APP_CONFIG, например так:

    smtp_password = kl240jvfslkr32rKgjlk # старая версия
    smtp_password = APP_CONFIG['smtp_password'] # новая версия
    

Убедитесь, что вы не включаете app_config.yml в ваш репозиторий, хотя вы можете захотеть создать пример файла, который проверяется, просто чтобы показать образец того, что должно быть в нем. Когда вы развертываете свое приложение, убедитесь, что app_config.yml хранится на сервере. Если вы используете стандартное развертывание Capistrano, поместите файл в общую папку и обновите задачу развертывания, чтобы создать симлинк на него в каталоге текущего релиза.

12
ответ дан 3 December 2019 в 23:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: