簡體   English   中英

如何在 APK 文件中保護此 API

[英]How can i secure this API in an APK file

我目前正在為我運行的網站開發 api。 該 api 將在許多地方使用,其中一個地方是 Android 應用程序。

它的目的是允許用戶登錄和下載文件。 我有 api 版本,它將使用 HTTPS,因此所有數據在傳輸時都很好。

我遇到的問題是 API 調用需要 API 密鑰。 使用此密鑰,您將能夠訪問可能導致問題的 API 的某些功能。

我想知道的是,有沒有辦法保護這個 API 密鑰? 我根本不是 Android 開發人員,但人們將使用 Android 上的 API,因此我需要制定解決方案。

以下是 API 使用的流程示例:

// Log the user in with their username and password (HTTPS, so not really an issue)
romhut.request('/api/users/login?apikey=KEY', {username : 'scott', password : 'password'}, function(r) { 

    console.log(r);

    // Once you have the token, request the API key that allows actions such as downloading
    romhut.request('/api/files/download?apikey=KEY', {token : r.token, file : file}, function(d){

        console.log(d);
        // Download the file

    }, 'POST');

}, 'POST');

您應該為每個用戶創建一個特定的 API 密鑰。 沒有真正好的方法來保護實際掌握在用戶手中的數據(向復制保護的制造商詢問這一點)然后您可以使用 HMAC 將 API 密鑰和請求的 API 散列在一起,並驗證兩端是否發生了同樣的事情. 請參閱: http : //en.wikipedia.org/wiki/Hash-based_message_authentication_code (PHP 有一個功能。)

事實上,更准確地說,密鑰和用戶之間應該存在多對一的關系,因為您可能有不同的和/或撤銷的用戶密鑰。

有關出色的概述,請參閱: https : //security.stackexchange.com/questions/18572/is-it-okay-for-api-secret-to-be-stored-in-plain-text-or-decrypt-able

不可以。一旦您將 API 密鑰嵌入到 Android 應用程序中,您就無法保護它。 該應用程序需要訪問 API 密鑰,因此有權訪問該應用程序的人將能夠從該應用程序中恢復該密鑰並將其用於自己的目的。 你能做的最好的事情就是混淆你的應用程序,這樣逆向工程就會變得更加困難(目標是讓攻擊者更難逆向你的應用程序,而不是值得他花時間)。 您需要根據暴露的 API Key 的風險來決定在這方面需要付出多少努力,但您永遠無法恢復,只會更加困難。 實際上,您最好的選擇是最有可能在您的構建過程中打開 Proguard(因此 APK 中的事情已經被混淆到相當程度,而您最終沒有工作)並希望最好。

Android 密鑰庫是一個值得關注的方向嗎? 然后,可能會根據應用程序在安裝時存儲在 android 密鑰庫中的密鑰將加密字符串發布到 API。 這樣,如果解密成功,它就可以為請求提供服務。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM