2017-09-16 67 views
0

我正在使用Django,我們計劃打開我們的一些API用於第三方使用。從自己的應用程序/網絡應用程序與服務器區分API調用

到目前爲止,我們一直在使用DRF以及用於我們的Django Web應用程序的會話身份驗證以及用於我們的Android應用程序的JWT的DRF。

我想知道的是來電是來自我們自己的應用程序(webapp/android應用程序)還是來自第三方應用程序(他們可以從自己的應用程序調用,可以是其他webapps /電話應用程序)。有什麼辦法可以區分嗎?我們希望將第三方API調用的數量計入我們的服務器。

回答

0

您的Android應用程序可以添加標頭User-Agent與應用程序版本。所以你可以區分請求。但它不是很可靠 - 因爲任何Web客戶端都可以發送這樣的頭文件。在這裏你可以簽署你的請求。通過URL添加一些祕密值從這個值計算md5/sha2並添加請求。 保護是基於想法只有你知道祕密價值。對於非關鍵任務來說沒問題,但對於金融應用程序可能有風險。

+0

明白了你的觀點。我們的API是我們的SaaS解決方案的一部分,我們的客戶可以使用我們的應用程序(網絡和電話)和他們的應用程序(使用3rs派對API)。我想控制不。的第三方API調用每月。這就是重要性。存儲在會話cookie中的任何值(md5/sha2)都可能被惡意用戶濫用。對於我們的應用以及第三方應用的長期令牌(比如由Google/Zoho爲其API提供的一次性令牌),JWT會有幫助嗎? – Sayantan

+1

絕對無法區分。假設你的Android客戶端被黑客入侵 - 它代碼的行爲方式非常不同。它仍然是「你的」或「他們的」? –

+0

我想問 - 這是區分的最終目的?如果統計:應該有多準確?你永遠不會100%。但如果98-99%就夠了 - 用第一種方法。 Mal用戶只是統計數據中的錯誤。如果你想提供更好的安全性 - 這是一種錯誤的方式。不應該依賴客戶的數據。服務器應用程序應該以同樣安全的方式對待所有人 –

相關問題