动态创建 MySQL 数据库有什么危险?

信息安全 Web应用程序 mysql 权限
2021-09-06 17:59:04

我正在建立一个网站,人们可以在其中建立小型私人社交网络。为了便于管理和可移植性,我希望每个网络都存储在不同的 MySQL 数据库中。

我知道 MySQL 服务器可以处理的数据库数量没有人为限制,并且在我的基本测试中没有可测量的性能影响。我想知道的是:如果我允许在没有我干预的情况下设置这些数据库,安全隐患是什么?

到目前为止我的想法:

  • 对于一般用途,应用程序将以具有有限“SELECT”、“INSERT”、“UPDATE”、“DELETE”权限的用户身份连接到 MySQL。该用户将被授予读取/写入每个创建的数据库的权限。

  • 创建新网络时,应用程序将以具有“CREATE”权限的特殊用户身份连接到 MySQL,因此它可以创建新数据库。

  • 如果我确信此人是合法用户(电子邮件验证、验证码等),我只会允许创建一个新数据库。

  • 如果创建了非法数据库,我会注意到并删除它们,并希望找出如何防止创建更多数据库。

有了这样的设置,有没有我没有想到的安全隐患?除了非法用户可能创建数据库之外,还有什么危险吗?

1个回答

这种架构没有固有的安全问题。任何风险都来自 MySQL 中的实现错误或漏洞。

听起来您正在考虑使用这种方法来分离不同网络的数据,但听起来确实有点过分。我知道您测试了性能,但是在大规模情况下这可能会使用更多资源,那是一个不同的论坛。

请记住,这一切都与实现有关,您可以将所有网络数据放在一个表中,只要您设计和编码良好,它就会是安全的。