2015-10-21 25 views
1

我不確定我是否應該在這裏或安全的stackoverflow頁面詢問這個問題,但我確定有人對此有一個很好的答案。Fabric.io Twitter Cridentials安全

我正在構建使用Fabric.io Twitter packageAndroid應用程序。使用此代碼需要TWITTER_KEYTWITTER_SECRET代碼。我試圖隱藏它們,因爲這是他們在添加包時提到的。

在我救了我的cridentials在SharedPreference像這樣在我的閃屏活動開始的時刻:

PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("TWITTER_KEY", "xxxxxxxxxxxxxxxxxxxxxxx").commit(); 

後來,用於初始化Twitter包,我recieving他們是這樣的:

TwitterAuthConfig authConfig = new TwitterAuthConfig(PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).getString("TWITTER_KEY", "defaultStringIfNothingFound") 

我和TWITTER_SECRET代碼一樣。


我有兩個問題:

  1. 什麼能讓人實現,如果他們有機會獲得我的鑰匙?
  2. 這是否足夠安全,以便其他應用程序無法訪問我的密鑰?
  3. 這是足夠安全的應用反編譯?

感謝您的幫助!

回答

1

如果人們可以訪問我的密鑰,人們可以實現什麼?

我不知道API,所以我不能回答這個問題。

這是否足夠安全,以便其他應用程序無法訪問我的密鑰?

是的,除非另一個應用程序具有root權限。

這是足夠安全的應用程序反編譯?

不可以。但是對此你無能爲力。你可以使它更難找到密鑰,但如果密鑰以某種方式嵌入到應用中,那麼沒有100%的解決方案。無論應用程序可以做什麼來恢復密鑰也可以由攻擊者完成。

Btw。爲什麼你將密鑰存儲在共享首選項中?

+0

感謝您的回答!我將它添加到共享首選項中,因爲我已經在某處讀過這是一個安全選項,所以其他正在運行的應用程序無法訪問它,因爲它不是直接作爲具有值的命名變量存儲的(至少我認爲這就是它說:p)。因此,當攻擊者搜索「TWITTER_KEY」或其他東西時,他們無法輕易找到該變量的變量,因爲它隱藏在代碼中,如果這是有道理的。 – Markinson

+0

但現在你已經將它存儲在兩個地方,應用程序代碼和磁盤上;所以攻擊者可以通過兩種不同的方式找到他們。 – Henry

+0

Yeaah ..我想這是對的,但至少應用程序運行時更安全。不是因爲它反編譯時我想。有關如何改善這一點的任何建議? – Markinson