尽管 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 包不会打开文件

尽管已经声明了文本,但 TextView 出现空错误

尽管 Xcode 是最新的,但无法将 iOS 应用程序部署到 App Store

在 django 中是不是有生成 settings.SECRET_KEY 的功能?

使用 Lambda、API Gateway 和 Cloudfront 时,尽管在 Lambda 响应中指定了“Access-Control-Allow-Origin”,但 CORS 错误