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

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

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

В чем причина постоянного хранения? Почему бы просто не генерировать его при запуске приложения?

app.secret_key = os.urandom(50)
4b9b3361

Ответ 1

Секретный ключ используется для подписания файла cookie сеанса. Если вам пришлось перезапустить приложение и восстановить ключ, все существующие сеансы будут аннулированы. Вероятно, это не то, что вы хотите (или, по крайней мере, не правильный способ сделать сеансы недействительными). Аналогичный случай может быть сделан для всего, что зависит от секретного ключа, например токенов, генерируемых его опасными для предоставления reset URL-адресов пароля (например).

Стандартная практика заключается в том, чтобы иметь некоторый ключевой ключ, предназначенный для репо (чтобы там что-то появилось для dev-машин), а затем установить ключ в локальной конфигурации при развертывании. Таким образом, ключ не просачивается и не нуждается в регенерации.

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