2011-11-03 43 views
1

我想在单个服务器上设置MongoDb,我一直在四处搜寻以确保我做对了。到目前为止,我还收集关于安全的一些基本知识:MongoDB单一服务器安全性和生产环境的可靠性?

  1. 启用身份验证 -
  2. 只有(http://www.mongodb.org/display/DOCS/Security+and+Authentication默认不启用?)允许本地主机连接
  3. 在PHP中,一定要投GET和POST参数为字符串,以避免注入攻击(http://www.php.net/manual/en/mongo.security.php)

我也拿起了关于可靠性的一件事。

  1. 您曾经在多个盒子上使用分片,但现在您只需启用Journaling? (http://stackoverflow.com/questions/3487456/mongodb-are-reliability-issues-significant-still)

这是故事的结局?启用身份验证和日记功能,您可以使用单台服务器吗?

谢谢!

回答

1

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

认证可以帮助,但最好的安全措施,以确保您控制可以跟MongoDB的,只有机器。您可以使用--bind_ip命令行标志或配置文件选项来执行此操作。你还应该设置一个防火墙(iptables或类似的)作为额外的措施。

至于注入攻击,你应该大多是安全的,只要你不要盲目的转换JSON(或类似结构)到PHP ASSOCS和直接转给MongoDB的方法。如果您自己构建关联,则通过处理$POST$GET值,您应该是安全的。