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

标签 python django security version-control django-settings

我使用 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/

相关文章:

python - Django、Gunicorn 和设置目录

php - 保护 PHP 站点中的文件

java - 以编程方式确定 Java 类是否已修补?

python - 排序列表后如何保存原始索引?

Google App Engine 上的 Django

python - South 在尝试迁移时引发 ValueError

asp.net-mvc-3 - 如何防止ASP.NET MVC应用程序中的DoS攻击?

python - 如何测量python中每个代码部分的RAM使用情况?

python - Qt 不允许我创建一个以我的应用程序命名的菜单项,其中包含字符串 "About"、 "Preferences"或“退出?有什么提示吗?

python - 由于 1.7.6 更新,我真的需要安装 Xcode 并编译 PyObjC 吗?