django 中 settings.py 中的密钥中的“Django-insecure”

Sve*_*ven 7 python django

使用django-admin startproject我的settings.py包含创建一个新项目后:

SECRET_KEY = 'django-insecure <actual secret key>'
Run Code Online (Sandbox Code Playgroud)

我以前从未在密钥中看到“django-insecure”。这是什么意思?

Ste*_*n C 5

\n

为什么自动创建的密钥不安全?似乎比人类的关键思想安全得多。

\n
\n

它是使用众所周知的过程从熵源生成的,其质量和安全性无法得到保证(由 Django 提供)。这是表面上的原因;请参阅https://docs.djangoproject.com/en/3.2/ref/checks/#security

\n
\n

security.W009:您的SECRET_KEY字符少于 50 个,少于 5 个唯一字符,或者 it\xe2\x80\x99s 前缀表示\'django-insecure-\'它是由 Django 自动生成的。请生成一个长且随机的SECRET_KEY,否则 Django\xe2\x80\x99s 的许多安全关键功能将容易受到攻击。

\n
\n

更重要的是,任何密钥的安全性取决于文件系统的访问控制机制。Django 设置文件是寻找密钥的明显位置。

\n

将密钥保存在加密安全的密钥库或HSM中,然后通过环境变量将其密钥传递给 Django 会更安全;请参阅在哪里存储密钥 DJANGO

\n

而且,无论您如何管理它们,您都应该使用您控制的硬件和您可以 100% 信任的机制 + 熵源自行生成密钥。(如果您不知所措,请考虑掷一些骰子作为随机数字的来源。)

\n