2011-09-07 266 views
7

我想在使用MongoDB作爲我的主數據庫。不過,我的應用程序完全使用JavaScript,並且我想使用REST API,即客戶端。REST API MongoDB身份驗證

我仍然不明白可以使用哪些安全機制,以便 可以在不向所有 用戶透露所有數據的情況下對數據庫進行JS調用。

請在這個問題上的意見。

問候, 唐納德

+0

@Brain,怎麼是以任何方式與這個問題有關? AJAX只是一種與其他服務異步對話的方式,與MongoDB REST接口或問題無關。 –

回答

5

首先,就可以進行數據庫身份驗證,這將使REST接口需要驗證,如果從遠程計算機連接。

這就是說,暴露你的數據庫是一個非常糟糕的主意,就像你建議的那樣。在您熟悉的服務器技術(例如node.js)中構建持久性抽象層,並將所有安全約束和身份驗證放在那裏。優點很多:

  • 即使MongoDB發生變化,您也可以保持API穩定。如果大多數情況下需要,您甚至可以用另一個持久性解決方案替換它。
  • 您可以限制單個客戶端可以放入數據庫的負載。如果直接公開數據庫,則可以做的很少,以避免人們執行昂貴的查詢,甚至可能破壞寫入。
  • 如果每個客戶端都直接訪問數據庫,您可以經常進行智能應用程序端緩存和優化(這取決於所討論的應用程序)。
+0

爲什麼它不安全?它與已經帶有REST接口的CouchDB有什麼不同? – BluePython

+0

REST接口並非不安全(雖然是潛在的性能問題),但將數據庫接口(RESTful或其他)直接暴露給客戶端幾乎總是會帶來風險。 –

2

檢出Sleepy.Mongoose,它是MongoDB的REST API接口。我沒有嘗試過,但它似乎支持標準的MongoDB身份驗證。

+1

爲什麼人們經歷所有這些麻煩而不是使用CouchDB,或者爲什麼MongoDB沒有標準的REST API接口?不這樣做的好處是什麼? – BluePython

1

MongoLab有一個可以訪問客戶端的REST API託管的MongoDB數據庫,他們甚至可以通過其支持文檔中的一些基於jQuery的示例。也就是說,Remon是正確的,因爲你在公開你的API密鑰時犧牲了任何安全性。

0

RESTHeart是一個用於MongoDB的Web API。

它提供應用程序級授權和認證。

檢查security文檔部分。

還有些例如應用程序可在GitHub上: