2012-09-05 71 views
12

Mongolab的REST API很酷。我可以直接在Mongolab的支持頁面上使用以下JavaScript,在我的網站中將其用於分析。只有我能理解認證的實際工作方式。任何查看html源代碼的人都可以輕鬆地複製URL中提到的API密鑰。 Mongolab控制面板不會爲我的網站提供任何註冊,以確保只有在來自我的域名的情況下才能驗證api密鑰。 此驗證如何工作?Mongolab REST API如何驗證

$.ajax({ url: "https://api.mongolab.com/api/1/databases/my-db/collections/my-coll?apiKey=myAPIKey", 
      data: JSON.stringify({ "x" : 1 }), 
      type: "POST", 
      contentType: "application/json" }); 

回答

11

非常好的觀察和很好的問題。

當前,所有API密鑰都具有對與用戶帳戶關聯的數據庫的讀寫權限,任何擁有API密鑰的代理都可以成功發出任何此類請求。

正如你所看到的,這個非常基本的密鑰並沒有設計成具有任何細粒度的安全性。

但是,我們正在研究一系列新的REST API安全功能。

如果您有興趣討論細節,請通過[email protected]聯繫我們。

+0

你似乎在這方面的工作了很長時間,雖然我明白,還有其他方法開發人員可以做到這一點本身,估計時間尺度將是有益的。 – Neil

+0

我很想聽聽這方面的更多信息。是否有鏈接到「一批新的REST API安全功能」,以便我可以閱讀它們將如何工作,並可能考慮到我的2cts? – iwein

+0

有沒有這方面的更新? – SlowAndSteady

-1

您有一個API密鑰用於使用其REST API對您的數據庫執行http請求。例如,如果用戶試圖登錄時我就與這樣的GET方法的請求:

https://api.mongolab.com/api/1/databases/name_db/collections/users/put_your_params_like_username_and_pw?apiKey=xxxxxxxxx

然後您分析該請求的響應。它不是世界上最安全的數據庫,但它正在變得越來越好。

如果您想了解更多的信息,我談論我的博客:http://lolapriego.com/blog/?p=16

1

我想使用MongoLab服務與MongoDB的我的第一個AngularJs應用程序,但MongoLab沒有準備好生產與Web應用程序,希望從前端訪問MongoDB。

在瀏覽器網絡流量中獲取API密鑰非常容易(請參閱下面的截圖,apiKey以純文本形式存在),然後任何人都可以完全訪問數據庫。所以搞亂MongoDB就沒有問題了。

我還沒有找到MongoLab的解決方法。目前,我想我會使用另一種服務,如https://www.dreamfactory.com/

我還沒有詳細地嘗試過它,但它對於MongoDB的AngularApp來說看起來不錯,我需要檢查它們如何實現api的安全性。從第一個角度來看,它看起來像使用會話令牌來保護對數據庫的請求。

Screenshot network traffic MongoLab credentials