2017-10-28 178 views
1

假設您正在開發一個由後端HTTP API組成的應用程序,該API提供前端UI。 UI在客戶端瀏覽器上呈現時,需要對後端進行一定的調用(例如,爲視圖獲取數據)。但是,例如,所有這些調用都可以在Chrome的開發者控制檯上進行檢查。這暴露了我的應用程序的整體邏輯和內部API端點。應該如何(以及如何)確保前端UI使用的後端API?

這是Web應用程序的問題嗎?我環顧了其他一些網站(例如Reddit),我確實能夠檢查正在進行的API調用,並且我甚至通過cURL設法再現了它,獲得了相同的響應。

我的第一個想法是解決這個問題,就是加密所有數據,並在前端應用程序內部解密。不過,我認爲這不會提供很高的安全性,因爲私鑰必須在應用的源代碼中進行硬編碼,這也可以通過現代瀏覽器進行檢查。此外,這可能會極大地影響應用程序的性能。

我能想到的最好的方法是以某種方式爲會話分配一個令牌(JSON Web令牌,也許?)到會話(然後分配給用戶)。需要該令牌才能進行API調用,並且可能會有短暫的到期時間。但是,該標記仍然可以在HTTP請求中看到。

任何想法?

+0

Fonsec - 我正在尋找替代品的同一問題,並希望知道你最終確定了什麼? –

回答

0

我正在使用bcrypts =>https://www.npmjs.com/package/bcryptjs + jsonwebtokens在我的MEAN應用程序中是一樣的。 Bcryptjs在服務器端創建一個salt並向客戶端發送加密的令牌。 API調用使用相同的標記。這使得解碼對於任何釣魚嘗試都有點困難。

改爲使用HTTPS。 =>Are querystring parameters secure in HTTPS (HTTP + SSL)?

+1

謝謝你的建議。我確實使用HTTPS,當然:)但是,我不能使用建議的包,因爲我在Elm中構建了前端,我不想依賴外部的JS調用 –

相關問題