2015-01-20 88 views
4

我期待在此示例代碼:在android應用程序中使用Twitter消費者密鑰和祕密硬編碼有多安全?

authConfig = new TwitterAuthConfig(BuildConfig.CONSUMER_KEY, BuildConfig.CONSUMER_SECRET); 

是什麼阻止有人從反編譯的apk,並開始使用我的應用程序的消費者密鑰和祕密?

+0

對於它的價值,API是Twitter的推薦面料。很難相信在Android上使用Twitter API而無需冒着consumer_key/consumer_secret風險的風險。 – 2015-01-20 23:50:48

+0

同意這個評論,並編輯我的答案,以適應。我認爲這些令牌需要得到正確的保護,並且使用網絡應用程序作爲代理似乎被某些人使用(並且有意義) – 2015-01-21 21:50:52

+1

我不理解代理解決方案。如何使代理的調用更難以模擬然後調用Twitter API? – 2015-01-22 01:51:20

回答

0

防止反編譯與親衛隊工具

基本上,要使用一個親衛隊的工具,在你的項目文件名爲project.properties中的以下值:

proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt 

這是親衛隊工具的參考 http://developer.android.com/tools/help/proguard.html

+1

模糊不會混淆文本中的字符串或數字,如果它們被確定需要使用的應用程序?他們必須存儲,以便應用程序代碼可以訪問它們來使用它們。 – 2015-01-20 23:01:49

1

如果這是你的鑰匙和應用程序是爲他人使用,那麼這些將在應用程序中可用,如果逆向工程。即使您在應用中對其進行了加密並在使用時進行了解密,您也需要在應用中包含解密密鑰,因此確定的惡意用戶也可以進行反向工程和解密。

我對此也做了一些進一步的研究,因爲它讓我很困擾。

我的理解是,CONSUMER_KEY和CONSUMER_SECRET,是你的,應該受到保護。我不認爲將它們分發給任何分發給用戶的應用程序是一個好主意。

相反,它們可以用來創建「不記名令牌」,作爲支持後端Web應用程序的一部分。可以通過在您自己的Web應用程序內調用適當的Twitter Web API來請求不記名令牌,即在安全的環境中。

通過這種方式,您將擁有三個角色,您的移動應用程序,您的Web應用程序和Twitter服務。移動應用程序請求來自您的Web應用程序的不記名令牌。 Web應用程序通過使服務器通過Twitter REST API調用服務器請求來自Twitter的不記名令牌,並且令牌和祕密保持爲您的狀態。不記名令牌由twitter返回給您的Web應用程序。然後,您的網絡應用程序可以將不記名令牌存儲在您的Web應用程序會話中,並充當代表請求推特的代理並確保即使不記名令牌仍然保密。

這裏有一些參考: http://wickedlysmart.com/twitternews-oauth/ https://dev.twitter.com/oauth/application-only http://hayageek.com/login-with-twitter/

+0

網絡很簡單。問題在於使用Twitter登錄或從移動應用程序發送推文。 – 2015-01-22 01:54:05

相關問題