尽管 SECRET_KEY 错误,但部署在 Heroku 上的 Django 应用程序仍然有效
Posted
技术标签:
【中文标题】尽管 SECRET_KEY 错误,但部署在 Heroku 上的 Django 应用程序仍然有效【英文标题】:Django App deployed on Heroku works despite wrong SECRET_KEY 【发布时间】:2021-10-18 09:13:42 【问题描述】:在我的 Django 项目中,我有一个 .env
文件,其中包含我的 DJANGO_SECRET_KEY
环境变量:
export DJANGO_SECRET_KEY=dummysecretkey123
在初始化 repo 之前,我在 .gitignore
文件中添加了对 .env
文件的引用,因此 SECRET_KEY 在 git 跟踪的任何 repo 中都不可见
在我的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
的目的不是为了保护我的应用,也就是说如果设置不正确,应用就不应该运行?
【问题讨论】:
这能回答你的问题吗? Effects of changing Django's SECRET_KEY 谢谢 - 如果我理解正确的话:错误的 SECRET_KEY 不会阻止应用程序运行,因为这不是它的目的,对吗? 【参考方案1】:django 中 SECRET_KEY 的用途在official documentation 中有所描述。
它说:
密钥用于:
会话,
消息,
密码重置查看令牌,
加密签名。
【讨论】:
以上是关于尽管 SECRET_KEY 错误,但部署在 Heroku 上的 Django 应用程序仍然有效的主要内容,如果未能解决你的问题,请参考以下文章
尽管指定了 Kubernetes 部署/服务端口,但连接端口错误
尽管 SA 帐户有权访问文件夹,但 SQL Server 部署的 SSIS 包不会打开文件
尽管 Xcode 是最新的,但无法将 iOS 应用程序部署到 App Store
在 django 中是不是有生成 settings.SECRET_KEY 的功能?
使用 Lambda、API Gateway 和 Cloudfront 时,尽管在 Lambda 响应中指定了“Access-Control-Allow-Origin”,但 CORS 错误