每个应用程序多个数据库。这是更好的安全性吗?

Multiple database per application. Is this better security?

我正在做一个在我看来应该只有 1 个数据库的项目。然而,客户坚持认为,在发生安全漏洞时,将数据分离到多个数据库中会更安全。这有点道理,但最后我认为,如果发生违规行为,无论您拥有多少数据库,您最有可能将所有东西都偷走。我想当且仅当您的数据库之间没有连接时,您才会受到保护。

我的项目由两种类型的用户组成,基本用户和付费用户。我的客户坚持基本用户应该有自己的数据库,而付费用户应该完全在一个单独的数据库上。这意味着我必须在每个数据库中构建两个登录表。问题在于允许免费用户(甚至访客)搜索付费用户。好吧,你猜怎么着,我必须连接到付费用户数据库才能检索它们。这不是把它们都放在一个地方吗?我什至没有提到用户需要有地址、图像和其他与之相关的东西(基本的或付费的)。这就是尝试在两个数据库之间强制执行完整性的有趣之处。

现在回到问题。拥有多个数据库是否更安全?如果是,为什么会这样?为了不破坏它必须遵循什么?

您的问题是我一直以来从企业中听到的最常见的问题之一。从开发人员的角度来看,您已经完全表达了真正的担忧,您是对的。

尝试将数据库表分离到不同的服务器无助于安全。尽管如此,它还是会导致完整性和同步问题,其影响比数据泄露更大。

当攻击者有权访问您的应用程序服务器时,他们也将有权访问所有数据库。尽管对源代码进行加密 -例如 PHP- 的 Ioncube 对您没有帮助。另一方面,一个 sql 注入漏洞将导致您泄漏整个数据库,即使您使用的是两个或三个独立的数据库。

我相信他们试图坚持将数据库服务与 Web 服务器分开。