【问题标题】:Django - configure database on launchDjango - 在启动时配置数据库
【发布时间】:2012-07-03 23:48:28
【问题描述】:

出于安全原因,我不想将所有数据库信息以明文形式存储在 settings.py 中。我想在 Django 服务器启动时将信息加载到内存中(即设置 DATABASE 设置变量)。

我该怎么做?

编辑:我认为这里存在误解。这个想法是划分安全性。如果攻击者成功访问了 django 机器,我不希望他们能够访问数据库(在不同的机器上)。这并非不合理。显然,当机器重新启动时,必须重新输入信息——但这就是完全划分的成本。使用这种方法,入侵 django 服务器机器不会影响数据的安全性。

【问题讨论】:

  • 在这种情况下,您是否也没有以纯文本形式提供的数据库信息(只是在不同的文件中,比如您的网络服务器配置)?只要您不与错误的人分享信息,我认为不会存在安全问题。
  • 查看编辑。我根本不想将信息保留在任何地方 - 我想在服务器启动时手动放入。
  • 好的。您面临的问题是,在启动时将这些额外选项传递给您的网络服务器(apache、nginx)并不是那么简单。老实说,如果没有一些复杂的解决方案,我看不到真正的方法来实现这一目标。
  • 如何创建一个保存数据库信息的文件,然后设置设置+启动时删除文件?这是我最初的想法,但据我所知,Django 没有启动信号或任何东西......
  • 这样的事情是可能的,但你不能轻易删除新文件。假设您创建了一个应该由 django 应用程序处理的新设置文件。这一项设置了数据库设置。一旦你之后删除它,Django 可以在哪里访问这些信息。我不是很喜欢 Django 代码,所以为了获取数据库相关信息,它来回设置了很多循环。

标签: django security


【解决方案1】:

您可以将数据库设置移动到另一个文件,但您会得到什么?详细信息需要存储在某处:服务器无法将详细信息加载到内存中,然后删除它从中读取详细信息的文件,因为下次重新启动时它将无法连接到数据库。

它还会不必要地使您的系统复杂化,因为当有人可以读取源代码时,您的系统已经受到攻击。比起将所有密码(以及类似的详细信息,例如 API 密钥)移动到其他地方的特殊文件,您应该更担心这一点。

【讨论】:

  • 查看编辑 - 我不想将信息保存在任何地方 - 我想在服务器启动时手动放入。
猜你喜欢
  • 2011-07-18
  • 1970-01-01
  • 2020-03-05
  • 1970-01-01
  • 2019-08-06
  • 2020-02-21
  • 2017-06-03
  • 1970-01-01
  • 2022-01-25
相关资源
最近更新 更多