为什么要隐藏 Django 密钥?

Why hide a django secret key?

我想问一下,为什么要在 Django 应用程序中隐藏密钥?为什么不直接将其提交给 public 源代码管理?我了解攻击者找到密钥(来自 here)的影响。但是如果我直接把代码上传到github让人家下载,运行python manage.py runserver然后去127.0.0.1:8000,我就不用隐藏了吧?当您 运行 将您的设备上的代码用作服务器并让他们以 public URL 访问它时,这些泄露密钥的影响是否适用?如果他们 运行 在自己的设备上安装它,那不会对我构成安全风险,对吧? 我读到知道密钥可以让他们绕过表单验证等。但他们只会搞乱他们自己本地安装的应用程序的数据库,所以我为什么要关心?

Django 密钥用于会话管理、签名数据和密码散列等用途。最好隐藏这些类型的键,以防万一。

您可以从此处的文档中看到:https://docs.gitguardian.com/secrets-detection/detectors/specifics/django_secret_key

秘密密钥用于加密 Django 项目中的通信,并且与密码学中使用的任何秘密密钥一样,秘密密钥如果暴露,可以并且将用于破解项目中的任何加密(请注意,即使您个人没有实施加密,Django 也会在密码、会话等许多地方使用它。

因此,如果您的密钥暴露在 public 存储库的源代码中,任何人都可以破解加密并获取他们可能未被授权的数据。

如果它只是本地机器上的应用程序 运行 我看不出隐藏它的理由,只要确保下载你的 repo 的用户知道 SECRET_KEY 是 public,因为如果那个人出于某种原因想要 public 可以访问它,这会给他们带来风险。 最好的办法是根本不要设置 SECRET_KEY,因此当用户想要 运行 您的应用时,他们必须设置自己的秘密