【发布时间】:2012-07-03 23:48:28
【问题描述】:
出于安全原因,我不想将所有数据库信息以明文形式存储在 settings.py 中。我想在 Django 服务器启动时将信息加载到内存中(即设置 DATABASE 设置变量)。
我该怎么做?
编辑:我认为这里存在误解。这个想法是划分安全性。如果攻击者成功访问了 django 机器,我不希望他们能够访问数据库(在不同的机器上)。这并非不合理。显然,当机器重新启动时,必须重新输入信息——但这就是完全划分的成本。使用这种方法,入侵 django 服务器机器不会影响数据的安全性。
【问题讨论】:
-
在这种情况下,您是否也没有以纯文本形式提供的数据库信息(只是在不同的文件中,比如您的网络服务器配置)?只要您不与错误的人分享信息,我认为不会存在安全问题。
-
查看编辑。我根本不想将信息保留在任何地方 - 我想在服务器启动时手动放入。
-
好的。您面临的问题是,在启动时将这些额外选项传递给您的网络服务器(apache、nginx)并不是那么简单。老实说,如果没有一些复杂的解决方案,我看不到真正的方法来实现这一目标。
-
如何创建一个保存数据库信息的文件,然后设置设置+启动时删除文件?这是我最初的想法,但据我所知,Django 没有启动信号或任何东西......
-
这样的事情是可能的,但你不能轻易删除新文件。假设您创建了一个应该由 django 应用程序处理的新设置文件。这一项设置了数据库设置。一旦你之后删除它,Django 可以在哪里访问这些信息。我不是很喜欢 Django 代码,所以为了获取数据库相关信息,它来回设置了很多循环。