【问题标题】:Is having the SECRET KEY in an environment variable better than having it in an untracked settings file?将 SECRET KEY 放在环境变量中是否比将其放在未跟踪的设置文件中更好?
【发布时间】:2018-07-27 16:36:58
【问题描述】:

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

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

【问题讨论】:

    标签: django django-settings secret-key dev-to-production


    【解决方案1】:

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

    如果您的系统因有人可以访问服务器而受到损害,这两种方法都会暴露您的安全密钥。所以,这不会有太大的不同。

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

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

    【讨论】:

    • 我同意依赖未提交的文件来运行项目并不是一个好主意,这就是为什么我制作了 README 文件,它应该可以指导我正确定义所有缺少的设置变量。但是 Python Decouple 似乎是个好主意,我可能会切换到它而不是拆分设置文件。
    • 谢谢! :-) 自述文件 +1。此外,关于设置的补充:可以有多个设置文件(dev、prod、ci、tests 等),只要它们都提交给 repo。您可以组合多个设置 + 环境变量(用于密码、密钥等)。当然,如果您可以使用单个设置模块维护您的项目,这将是最好的方案。在这种情况下,python-decouple 有很大帮助。我总是尝试将我的项目保留为 1 个设置,但有时您必须将其拆分
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-24
    • 2018-05-02
    • 2015-06-07
    • 1970-01-01
    • 2021-01-26
    • 1970-01-01
    • 2018-04-23
    相关资源
    最近更新 更多