我即将将我的 Django 应用程序部署到被称为“互联网”的敌对环境中,并且我正试图更好地理解 Django 的后果SECRET_KEY
。标准程序之一似乎是保护settings.py
. 很公平。到目前为止,文档说不要将您的密钥提交给 SVN、CVS 等......因为这可以轻松访问您的密钥。但是,如果有人想将密钥提交到他们的仓库,这将表明密钥是静态的(参见问题 #4)?
无论如何,这是我的问题:
- 将密钥存储为环境变量如何比直接存储更安全
settings.py
?例如,如果攻击者可以阅读settings.py
,他很可能只需要输入$ echo $DJANGO_SECRET_KEY
! - 将密钥存储在文件中如何比直接存储更安全
settings.py
?如果他会读书settings.py
,他可能会读书django_secret_key.txt
。 - 如果攻击者破坏了你的机器,他们不能简单地用
settings.py
to加载 python 解释器> print settings.SECRET_KEY
吗? - 最后,每次重新启动网络服务器进程时随机生成密钥是否是一种不好的做法?这可能是完全随机的,也可能提示用户输入密钥。显然,如果攻击者自己可以重新启动 Web 服务并输入他选择的密钥,则后者会呈现出严重的弱点。