Подтвердить что ты не робот

Исключительная базовая ошибка конфигурации Heroku Config

Просто нажал мое первое приложение на Heroku с помощью Git и сразу получил ошибку Interanl Server.

Вы должны установить config.secret_key_base в конфигурацию вашего приложения.

Это связано с тем, что в моем файле .gitignore включен следующий файл:

конфигурации/инициализаторы/secret_token.rb

Я использую стандартный шаблон для моего файла .gitignore, найденного здесь: https://github.com/github/gitignore/blob/master/Rails.gitignore

Мой вопрос. Должен ли я установить этот ключ через Heroku напрямую для дополнительной безопасности, и если да, то как?

ИЛИ

Должен ли я просто удалить эту строку из моего файла .gitignore?

4b9b3361

Ответ 1

В дополнение к установке секретного токена в качестве переменной ENV на Heroku, как описано Ником Джинанто, для выполнения этой работы вам также потребуется следующее.

Удалите config/initializers/secret_token.rb из .gitignore

Измените строку в этом файле на:

MyApp::Application.config.secret_token = ENV['SECRET_TOKEN']

Затем вы получите секретный токен, который вы установили с конфигурационными конфигурациями Heroku.

Чтобы токен был выбран в локальной среде, вам нужно будет добавить его. Здесь есть несколько вариантов, но ближайший к Heroku - использовать бригадный мастер вместе с файлом .env в корне вашего проекта. Для параметра .env потребуется secret_token

SECRET_TOKEN=NKUd7gisd7fueAISDfg....

Вы можете использовать команду rake secret для генерации токенов. Убедитесь, что ваш .env файл добавлен в .gitignore.

Со всем этим на месте у вас будут разные жетоны для Heroku и локальные, и ваш токен не будет в вашем исходном контроле.

Ответ 2

Установите его как переменную окружения Heroku и предоставите резервную копию для разработки

Удалите секретный код, проверьте секретный инициализатор на управление версиями, установите переменную среды на Heroku и предоставите резервную копию для разработки и этапа.

1. Удалите секретный код и, возможно, предоставите резервную копию:

Измените конфигурацию /initializers/secure _random.rb, чтобы удалить секретный код для жесткого кодирования. При желании можно включить резервную копию для непроизводственных сред, если вы не хотите менять способ запуска своего сервера.

secret = Rails.env.production? ? ENV['SECRET_TOKEN'] : "top_secret_token"
YourApp::Application.config.secret_key_base = secret

2. Проверьте config/initializers/secure_random.rb на git

Измените .gitignore и удалите строку:

config/initializers/secret_token.rb

Теперь зафиксируйте файл.

3. Установите секретный ключ для Heroku

Run:

rake secret

для генерации случайной буквенно-цифровой строки. Мне нравится делать это вдвойне, смешивая ключ немного вручную, на всякий случай, если в алгоритме генерации ключей обнаружена будущая слабость, как это случилось с Debian не так давно. Возможно, это не нужно.

Следующий запуск:

heroku config:set SECRET_TOKEN=paste_random_string_here

чтобы установить секрет как переменную среды Heroku. Развернитесь на Heroku, и все готово.

Ответ 3

Лучше всего использовать переменную ENV для этого.

Таким образом, вы можете сделать недействительным все файлы cookie быстро, если это необходимо, иметь отдельный секрет для каждой среды и не нужно обрабатывать файл особым образом.

heroku config:set SECRET_TOKEN=ertbs45tnsb3aw5bsxdrt54...

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