尽管错误 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.
在我的 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.