NoSQL 数据库的安全性

信息安全 已知漏洞 数据库 nosql
2021-08-26 01:04:19

希望这不是太宽泛。

我对 NoSQL 数据库几乎没有经验,但我知道它们越来越受欢迎。作为一个非常关心安全性的开发人员,我想知道,总的来说,从安全角度来看,使用 NoSQL 数据库有哪些优点和缺点。

例如,它们一般安全吗?它们是否容易受到对传统关系数据库构成威胁的相同类型的攻击?像我这样只有关系数据库经验的人可能从未听说过与它们相关的新漏洞吗?是否有适用于 NoSQL 数据库的最佳实践/建议,例如您可以轻松找到的关系数据库?

2个回答

一般来说,据我所见,NoSQL 数据库的问题与标准 SQL 有所不同,通常是因为它们的重点。

首先,通常许多 NoSQL 数据库缺乏很多安全功能(例如细粒度的身份验证/授权)。产品本身的网站实际上会说它们仅设计为从“受信任的环境”(例如redismongodb)访问。

它们的局限性有多重要,可能取决于你想用它们做什么。因此,标准的 Web 应用程序可能没问题(只需要一个级别的访问权限,并且您可以将 IP 级别的访问权限限制为仅对 Web 服务器的访问),但是为具有不同权限的多个用户设计的直接访问数据库的系统会出现问题。

其次(我接受这一点可能被视为有点 FUD'y)代码库的成熟度。这些产品都是相对较新的产品,并且发展得很快,所以我希望从安全角度来看,与 Oracle DBMS 或 MS SQL 等引擎相比,对它们的审查较少。虽然这两个数据库在过去都有很多问题,但最近(尤其是在 MS-SQL 的情况下)它们的安全记录非常好。

不利的一面是代码库要小得多,产品要简单得多,因此要攻击的功能更少。此外,由于(AFAIK)它们缺乏执行操作系统命令的能力等功能,因此与具有大量可用功能的大型关系 DBMS 相比,妥协的影响可能更低。

NoSQL 易受攻击就像 SQL 数据库或 LDAP 数据库易受攻击一样。当使用一种语言对应用程序进行编程并且您与数据库交互时,您需要将信息放入数据库中。

任何产品的危险在于用户可以包含代码而不是信息。这不依赖于所使用的数据库类型或语言。

当您获得用户输入时,您需要确保对其进行清理以防止发生代码包含。NoSQL 数据库的问题在于,通常还没有或没有为您的语言提供足够深入的测试 API。这意味着您需要自己编写。这很危险,因为您可能总是会看到一些东西。我想向您推荐OWASP - 不安全的直接对象引用

我知道对于数据库本身使用的标准身份验证机制,例如 MongoDB,一直存在担忧。这更多的是不将数据库本身直接暴露给不受信任的来源的问题。例如,这就像您允许您网站的用户直接连接到您的 MySQL 数据库一样。虽然这可能仍然会产生很大的影响,但是像这样让您的数据库受到损害的可能性很低,并且不取决于您的 Web 应用程序。