尽管错误 SECRET_KEY 部署在 Heroku 上的 Django 应用程序仍然有效

Django App deployed on Heroku works despite wrong SECRET_KEY

在我的 Django 项目中,我有一个 .env 文件,其中包含我的 DJANGO_SECRET_KEY 环境变量:

export DJANGO_SECRET_KEY=dummysecretkey123

我在初始化回购之前在我的 .gitignore 文件中添加了对 .env 文件的引用,因此 SECRET_KEY 在 [=39 跟踪的任何回购中都不应该可见=]

在我的 settings.py 中,我将 SECRET_KEY 设置如下:

SECRET_KEY = env.str("DJANGO_SECRET_KEY")

为了在 Heroku 上部署,我通过 Heroku 仪表板中的 Config Vars 添加了 SECRET_KEY - 一切都按预期工作。

然后出于好奇,我把Heroku中的SECRET_KEY改成了错误的值,看看效果。令我惊讶的是,该应用程序仍然在线并且可以运行。我重新启动了所有测功机,但没有任何改变。然后我通过 heroku run python manage.py shell > import os > print(os.environ) 检查了 Heroku 服务器的环境变量,可以看到故意为 SECRET_KEY

设置了错误的值

我在这里错过了什么? SECRET_KEY 的目的不是为了保护我的应用程序吗,也就是说,如果设置不当,应用程序应该无法运行?

django 中 SECRET_KEY 的用途在 official documentation 中有描述。

它指出:

The secret key is used for:

sessions,

messages,

PasswordResetView tokens,

cryptographic signing.