MongoDB单服务器安全性和生产环境的可靠性?

时间:2011-11-03 15:36:15

标签: security mongodb

我想在一台服务器上设置MongoDb,我一直在寻找以确保我做得对。到目前为止,我已经收集了一些关于安全性的基础知识:

  1. 启用身份验证(http://www.mongodb.org/display/DOCS/Security+and+Authentication - 默认情况下未启用?)
  2. 仅允许localhost连接
  3. 在PHP中,请务必将GET和POST参数强制转换为字符串以避免注入攻击(http://www.php.net/manual/en/mongo.security.php)
  4. 我还提到了一件关于可靠性的事情。

    1. 您曾经在多个盒子上使用分片,但现在您可以启用Journaling? (http://stackoverflow.com/questions/3487456/mongodb-are-reliability-issues-significant-still)
    2. 这是故事的结尾吗?启用身份验证和日记功能,您最好只使用一台服务器吗?

      谢谢!

1 个答案:

答案 0 :(得分:1)

如果您在单个服务器上运行,那么您肯定应该启用日记功能。在2.0上,这是64位版本的默认值;在32位版本或更早版本(1.8.x系列)上,您可以使用--journal命令行标志或配置文件选项启用它。请注意,使用日记会导致MongoDB使用它通常会占用的双倍内存,这在32位计算机上主要是一个问题(因为内存通常限制在2GB左右,日记会有效减半)。

身份验证可以提供帮助,但最好的安全措施是确保只有您控制的计算机才能与MongoDB通信。您可以使用--bind_ip命令行标志或配置文件选项执行此操作。您还应该设置防火墙(iptables或类似的)作为额外措施。

对于注入攻击,只要你不盲目地将JSON(或类似结构)转换为PHP关联并将它们直接传递给MongoDB方法,你应该是安全的。如果您自己构建关联,通过处理$POST$GET值,您应该是安全的。