的Python / Django的 - 避免在源代码中保存密码(Python/Django - Av

2019-08-17 11:24发布

我使用Python和Django的创建web应用程序,这是我们在源代码管理存储。 Django是建立正常的方式,密码是在settings.py文件中的纯文本。

以纯文本格式存储我的密码会打开我到一些安全问题,特别是因为这是一个开源项目,我的源代码将受版本控制(通过git的,Github上,整个世界去看看!)

现在的问题是,什么是对AA的Django / Python的开发环境,安全地写一个settings.py文件的最佳做法?

Answer 1:

虽然我没能碰到Python的任何具体的计算器,我没有找到一个网站,是有帮助的 ,我想我会与社区分享其余的解决方案。

解决方案:环境变量。

注意:虽然环境变量是在这两个的Linux / Unix / OS X和Windows的世界相似的,我还没有在Windows机器上测试此代码。 请让我知道,如果它的工作原理。

在您的bash / sh shell中,键入:

export MYAPP_DB_USER='myapp'
export MYAPP_DB_PASSWORD='testing123'

而在你的Django settings.py文件:

DATABASE_USER = os.environ.get("MYAPP_DB_USER", '')
DATABASE_PASSWORD = os.environ.get("MYAPP_DB_PASSWORD", '')

在这种情况下,用户名和密码,将默认为一个空字符串,如果该环境变量不存在。



Answer 2:

虽然环境变量是方便了很多配置, 把密码中的环境变量是不是 安全 。 随着替代正在外面普通版本控制配置文件,这里有一些不同的缺点:

  • 环境变量可能会不小心泄露(通过可能是通过明文传输得到调试通道,给最终用户,或者像〜/.* sh_history文件系统意想不到的地方)。

  • 配置文件可能会意外地被添加到版本控制和人们访问仓库没有部署权限的结束。

阅读博客文章对你的秘密是有害的环境变量的详细参数:环境是整个过程访问,被继承到子(也可能是第三方)的过程,且存在外部开发者对待环境变量之间没有明确的假设保密。

Python中最简单的配置文件格式仅仅是一个Python模块 。



文章来源: Python/Django - Avoid saving passwords in source code