2016-10-01 156 views
0

應用程序具有前端和後端模塊,前端調用Java/Spring後端的rest服務。 是否有任何最佳實踐如何檢測不是由前端生成的惡意請求(如果某些用戶試圖通過其他客戶端從後端直接調用服務)?惡意請求檢測/驗證請求

可能爲前端的每個請求生成一些哈希值,並在後端解密此值以驗證此請求?

回答

0

你需要的是驗證。後端需要驗證前端Web應用程序或用戶本身。

最常見的方式可能是對前端進行身份驗證,這實際上意味着前端和後端具有共享密鑰,每次調用都會發生身份驗證,後端會信任前端。這可以通過http基本認證(當然是通過https)到某種api密鑰機制(簽名請求等)以無數方式實現。根據您的用例和威脅模型,您不必重新發明輪子,基於https的http基本身份驗證可能就足夠了。

另一種做事的方法是將用戶憑證委託給後端服務。這通常通過將用戶的單點登錄令牌傳遞給後端來實現,當前端調用後端服務時有效地模擬用戶。可以說這更安全,例如它不需要Web和應用程序之間的信任級別,但服務仍然需要信任發佈令牌的SSO組件。重點在於攻擊者竊取(更不用說來自前端服務器,這可能是一個更簡單的目標)沒有什麼祕密,所以攻擊者可能更難以向後端服務發出請求,即使後端和後端/或前端服務器已經被入侵。

所以,雖然我認爲這裏的答案不是正確的格式來詳細說明如何進行此認證(實際上有多個好的解決方案,並且在每種情況下,實現細節都非常重要),至少在概念上這些是你的選擇,我認爲。

+0

感謝您的回覆,但應用程序已經有認證和授權服務。 –

+0

那麼問題是什麼?認證和授權的目的是確保呼叫者是誰,只允許授權呼叫者執行操作。這適用於後端服務以及前端應用程序。 –