2011-11-03 42 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值,您應該是安全的。