2016-06-13 200 views
0

我有一個cordova客戶端應用程序,我想限制對我的REST API的訪問權限僅限移動cordova客戶端,以防止瀏覽器和其他不允許的設備訪問我的API。客戶端 - 服務器REST APIs安全

對於客戶端,我應該做javascript東西(應用程序與cordova運行),但我不能只設置一個靜態的令牌在我的代碼,並作出$.ajax()呼叫服務器,因爲用戶可以複製該令牌,所以我需要一種方法來保護令牌和$.ajax()呼叫。

我該如何繼續?

謝謝

+0

如果移動客戶端用戶必須進行身份驗證,則可以爲每個用戶分配一個公鑰和私鑰,並使用HMAC簽名進行REST API調用。 – bassxzero

+0

@bassxzero,應用程序中不需要身份驗證。 – Frank

回答

0

您可以將服務器設置爲僅回覆某些用戶代理。它可以是默認的Cordova WebKit用戶代理,也可以在config.xml中爲您的應用程序設置一個定製的用戶代理。查看Cordova documentation中的OverrideUserAgent

+0

好的,但'userAgent'可以手動更換嗎? – Frank

+0

是的,具有一定知識的桌面用戶可以瞭解您的用戶代理並手動更改它。像Zappescu說的,你可以將它與'device.platform'結合起來,這樣就很難獲得訪問權限,但是如果限制對後端的訪問非常重要,你應該考慮包含認證。 – Alfonso

0

我建議您使用設備plugin來獲取設備的平臺。我將它用於我的內部使用統計信息,並在用戶打開應用程序時在運行時爲您提供「Android」,「iOS」等字符串。 與你的服務器分享字符串,你可以有你想要的。

+0

謝謝,但我認爲有人可以複製'ajax'請求並傳遞'Android'作爲參數,並將訪問服務器。 – Frank