该系列的一部分:
MongoDB 安全性:确保数据安全的最佳实践
MongoDB,也称为Mongo,是许多现代 Web 应用程序中使用的文档数据库。与任何数据库管理系统一样,负责管理 Mongo 数据库的人员必须遵守推荐的安全最佳实践,以防止数据在发生灾难时丢失并防止其落入恶意行为者之手。
本系列概念文章对 MongoDB 的内置安全功能进行了高级概述,同时还重点介绍了一些通用的数据库安全最佳实践。
无论您付出多少努力来加强 MongoDB 安装的安全性,随着时间的推移,新的漏洞不可避免地会出现。与从一开始就使用安全设置运行 Mongo 一样重要,执行频繁的检查和诊断以确定系统安全状态也同样重要。
例如,您应该定期检查 MongoDB 的新更新,以确保您使用的版本没有任何未修补的漏洞。Mongo 版本号采用XYZ的形式,其中X表示版本号,Y表示发布或开发系列号,Z表示修订或补丁号。MongoDB 大约每年都会发布一个新版本,在撰写本文时的最新版本是4.4,但他们也会根据需要发布新的修订版和补丁。
虽然 MongoDB 通常建议您使用可用的最新版本来优化安全性,但请注意新版本系列(即从4.4版到4.6版)可能会破坏向后兼容性。也就是说,MongoDB 建议您始终升级到发布系列的最新稳定版本(这意味着,如果您安装了4.4.4版,则应在可用时升级到4.4.5),因为这些通常是向后兼容的补丁修复错误。
人们还应该考虑他们打算如何与他们的 MongoDB 数据库进行交互,以及这种情况是否会随着时间的推移而改变。MongoDB 提供了几个命令和方法,允许您默认执行 JavaScript 函数的服务器端执行。例如,您可以使用$where
运算符评估 JavaScript 表达式以查询文档。这为您提供了更大的灵活性,因为它允许您表达没有等效标准运算符的查询。但是,通过允许服务器端 Javascript 执行,您也会将数据库暴露给潜在的恶意表达式。因此,如果您不打算使用服务器端脚本,MongoDB 建议您禁用它。
同样,默认情况下,MongoDB 将验证所有用户输入,以确保客户端无法将格式错误的 BSON 插入到数据库中。并非每个用例都需要此输入验证,但 MongoDB 建议保持启用输入验证,以防止您的数据库存储任何无效的 BSON 文档。