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

Ash*_*han 33 python security django version-control django-settings

我使用Python和Django来创建我们存储在源代码控制中的Web应用程序.通常设置Django的方式,密码在settings.py文件中以纯文本形式显示.

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

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

Ash*_*han 43

虽然我无法在stackoverflow上遇到任何特定于Python的内容,但我确实找到了一个有用网站,并且我认为我会与社区的其他人共享解决方案.

解决方案:环境变量.

注意:虽然Linux/Unix/OS X和Windows世界中的环境变量都相似,但我还没有在Windows机器上测试过这段代码.如果有效,请告诉我.

在你的bash/sh shell中,输入:

export MYAPP_DB_USER='myapp'
export MYAPP_DB_PASSWORD='testing123'
Run Code Online (Sandbox Code Playgroud)

在你的Django settings.py文件中:

DATABASE_USER = os.environ.get("MYAPP_DB_USER", '')
DATABASE_PASSWORD = os.environ.get("MYAPP_DB_PASSWORD", '')
Run Code Online (Sandbox Code Playgroud)

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

  • ...以及包含您设置为.gitignore的密码的文件 (7认同)
  • 这种方法的缺点是错误报告电子邮件泄漏环境变量. (3认同)
  • 如果该项目需要托管在云服务器中怎么办?我将如何导出环境变量? (2认同)