Генерация секретного ключа Django - PullRequest
0 голосов
/ 03 февраля 2019

Я делаю котельную плиту для бэкэнда Django, и мне нужно иметь возможность сделать это там, где следующий человек, который загрузит ее, не будет иметь доступа к моему секретному ключу, очевидно, или иметь другой.Я изучал некоторые варианты и стал экспериментальным в этом процессе.Я пробовал следующее:

from django.core.management.utils import get_random_secret_key 
SECRET_KEY = get_random_secret_key()

Кажется, это работает.Я предполагаю, что он генерирует новый ключ каждый раз, когда я запускаю python manage.py runserver.Будет ли это проблемой для производственной среды?Это действительно для развертывания Heroku, есть ли лучший способ сделать это с публичным репо?Я представляю, что я делаю сейчас, что-то сломает.

1 Ответ

0 голосов
/ 03 февраля 2019

Вы думаете, что это правильно, секретный ключ не должен меняться при каждом запуске.Другие люди должны создать свои собственные вручную, а затем совершить репо.Другой способ - загрузить его из переменных среды и позволить им поместить свой ключ туда.

О втором вопросе - единственная причина, по которой вам нужно это сделать, - это компрометация ключа.Согласно документации:

Секретный ключ используется для:

Для всех сессий, если вы используете какой-либо другой сеансовый бэкэнд, кроме django.contrib.sessions.backends.cache, или используете по умолчанию get_session_auth_hash().

Все сообщения, если вы используете CookieStorage или FallbackStorage.

Все токены PasswordResetView.

Любое использование криптографической подписи, если не предоставлен другой ключ.

Таким образом, изменение этого параметра, вероятно, приведет к выходу из системы всех пользователей и аннулированию ссылок на пароль / сброс.Это не то, что вы хотели бы делать на регулярной основе, но не полная катастрофа.

...