2012-11-30 116 views
1

我們正在開發iPhone應用程序以及第三方。該應用程序將通過HTTP從ASP.NET WebAPI請求數據。大多數時候這些請求是隻讀的,沒有副作用,但其中的一些允許用戶更改數據或發送電子郵件。如何保護API不被使用我們的應用程序的用戶調用?包括一個簡單的密碼似乎是無效的,因爲它可以很容易地被任何有權訪問應用程序的人嗅探。如何保護HTTP REST API免遭惡意使用?

有沒有一個標準的機制或技術來防止這樣的問題呢?

編輯:它可能是足夠的,可以添加一個簡單的密碼來請求,但然後使用API​​的強制HTTPS?如果使用HTTPS,可能添加密碼不會提高安全性嗎?

+0

您需要在REST服務的身份驗證/授權中執行此操作。您可以在其中獲得測試,無論用戶是否已通過身份驗證。 –

回答

1

一個平凡的解決方法是爲每一個用戶提供隨機的API密鑰創建他的賬戶時,然後在應用程序的數據庫存上的連接。

然後,每個請求具有與API密鑰簽署。

它可以讓你以確保請求已經從與你的應用設備發送,並會幫助您的請求,並知道哪些用戶調用哪個端點。

當然,如果用戶是WiFi網絡,他可以中間人和他的API密鑰的受害者會受到影響,如果你不使用HTTPS。

如果您不希望api密鑰在每個傳出請求中「可見」,則可以傳輸用戶標識和一個將請求參數和API密鑰串聯的簽名,並將其散列爲md5。 REST API必須執行相同的操作,並在允許請求之前檢查簽名的差異。

0

如果你尋找一個重量級的XML解決方案,你可以設置一個小的內部PKI用自己的CA.併爲每個用戶頒發證書(存儲在他們的電話上),然後您可以查看XAdES。併爲eveloped或包絡類型簽名創建驗證邏輯。在解析之前剝離簽名時在Filter中,或者在給定方法中手動執行此操作。另外還有用於運輸保護的SSL/TLS。