我使用Python和Django创建Web应用程序,我们将其存储在源代码管理中.按照通常设置Django的方式,密码在settings.py文件中是纯文本的.
以纯文本形式存储密码会让我面临许多安全问题,尤其是因为这是一个开源项目,我的源代码将受到版本控制(通过git,在Github上,让全世界都能看到!)
问题是,在Django/Python开发环境中安全地编写settings.py文件的最佳实践是什么?
我使用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", '')
在这种情况下,如果环境变量不存在,用户名和密码将默认为空字符串.