我使用 Python 和 Django 创建 Web 应用程序,并将其存储在源代码控制中。通常设置 Django 的方式,密码在 settings.py 文件中是纯文本的。
以纯文本形式存储我的密码会给我带来许多安全问题,特别是因为这是一个开源项目,而且我的源代码将受到版本控制(通过 git,在 Github 上,全世界都可以看到! )
问题是,在 Django/Python 开发环境中安全地编写 settings.py 文件的最佳实践是什么?
最佳答案
虽然我在 stackoverflow 上没有遇到任何特定于 Python 的内容,但我确实找到了 website that was helpful ,并认为我会与社区的其他人分享解决方案。
解决方案:环境变量。
注意:尽管 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", '')
在这种情况下,如果环境变量不存在,用户名和密码将默认为空字符串。
关于Python/Django - 避免在源代码中保存密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15327776/