将 SECRET KEY 放在环境变量中是否比将它放在未跟踪的设置文件中更好?

Is having the SECRET KEY in an environment variable better than having it in an untracked settings file?

在项目的settings.py文件被拆分为基础文件、开发文件和生产文件的场景中,并且在VCS中仅跟踪基础文件。如果 SECRET_KEY 在生产设置文件中是硬编码的,这是一个问题吗?或者将它放在环境变量中是更好的选择吗?如果是,为什么?

从系统中提取它是否比在文件中以纯文本形式写入更安全?

我想说这两种方法的安全性是一样的。写在文件中(未提交到源代码存储库)或作为环境变量将具有相同的效果。

如果您的系统以某种方式受到威胁,有人可以访问服务器,这两种方法都会暴露您的安全密钥。所以,这不会有太大的区别。

现在,我想说使用环境变量是一个更好的策略。虽然与安全无关。但通常将未提交的文件依赖于 运行 一个项目并不是一个好主意。这是著名的 in my machine it works 问题的原因之一。而且它还使新手难以初始设置项目。

对于这种设置和配置管理,有一个很棒的 python 库,叫做 Python Decouple。值得一试。我在我使用的每个 Django 项目中都使用它。