local_settings.py 反模式的原因之一是将 SECRET_KEY、AWS 密钥等值放入设置文件中有问题:
- 秘密通常应该只是:秘密!将它们保存在版本控制中意味着每个拥有存储库访问权限的人都可以访问它们。
我的问题是如何将所有密钥保密?
原文由 user2015666 发布,翻译遵循 CC BY-SA 4.0 许可协议
2 回答5.1k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答972 阅读✓ 已解决
3 回答1.1k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
1 回答1.7k 阅读✓ 已解决
1 回答1.2k 阅读✓ 已解决
最初的问题是关于如何在环境变量中保密。这在《 Two Scoops of Django 》一书中进行了广泛讨论。以下是他们所说内容的摘要,然后是关于使用此技术的警告。
从 1.11 版本的第 48 页(第 5.3 节)开始:
在下一页,本书继续:
他们描述了如何在本地和生产环境中设置环境变量(以 Heroku 为例——您需要检查您是否使用不同的主机,这只是一种可能性):
最后,在第 52 页,他们给出了如何访问密钥的说明。例如,您可以将下面的前两行放在您的设置文件中,以替换默认情况下放置在那里的原始密钥字符串:
请注意,这在某些情况下不起作用,例如,如果您使用的是 Apache 服务器。要处理这种模式不起作用的情况,您应该查看他们的书的第 5.4 节(“当您不能使用环境变量时”)。在这种情况下,他们建议使用秘密文件。
截至 2017 年底,这种在环境变量中存储秘密的技术是 Two Scoops 和 Twelve Factor App 设计模式中推荐的最佳实践。 Django 文档也推荐使用它。但是,存在一些安全风险:如果某些开发人员或某些代码可以访问您的系统,他们将可以访问您的环境变量,并可能无意中(或有意地)将它们公开。这一点是由 Michael Reinsch 在这里提出的:
http://movingfast.io/articles/environment-variables-considered-harmful/