2013-07-19 116 views
2

我們正在爲我們的應用添加Dropbox支持,現在我們有一個「應用密鑰」和「應用祕密」。我可以只讓那些以純文本格式的代碼,如同步API教程列出:我應該加密我的Dropbox應用程序密鑰/祕密嗎?

DBAccountManager* accountMgr = 
    [[DBAccountManager alloc] initWithAppKey:@"hf2hf892hf9y29h" secret:@"n29fh82h4f"]; 

(注:這是一個由密鑰和密碼,而不是我們的真實的)

但那麼如果他們想要從應用程序中提取它們,那將會非常容易。爲了防止這種情況發生,我們可以添加一些基本加密功能,以使密鑰更難找到,但顯然這些密鑰仍然會在某個時候用於調用DropBox帳戶管理器,因此無法保持完美安全。

這是某人擔心的事情,還是僅僅是一個真正想要進入並找出鑰匙的人的事實?

回答

2

這是不是有人擔心它大約

任何理智的開發商的後顧之憂。請使用某種形式的加密。提示:我的態度 - 當我從AppStore下載一個需要某種形式的登錄[在此處插入任意webservice]的應用程序時,我通常會解密該二進制文件,然後運行otool或至少strings就可以了。如果它包含明文密碼/ OAuth密鑰/ SSL密鑰對等,我通常會立即將其丟棄。

這真的是一個真正想要進入並找出鑰匙的人的事實嗎?

實際上,yes, even the keychain isn't secure ;-)。但是,這是不是藉口因爲如果主題是您的數據和/或您的用戶的安全性,不會盡力做到最好。

+0

看起來你正在談論存儲用戶名和密碼的應用程序,這不是Dropbox集成的工作方式 - 應用程序本身具有與用戶憑據完全分離的「密鑰」和「祕密」。我誤解了你的答案嗎? Dropbox API爲您處理用戶憑據,因此應用程序作者甚至從未看到用戶的用戶名/密碼。 – Colen

+1

@Colen我很害怕你。我自己使用過Dropbox SDK。正如您所述,您需要一個應用ID和一個密鑰才能讓Dropbox授權您的應用。如果您在應用程序中對這些代碼進行硬編碼,一個簡單的'strings'將以明文形式顯示它們。這意味着人們可以輕而易舉地發出身份盜用攻擊,將其惡意應用程序僞裝成您的身份,從而將用戶的安全暴露給攻擊者。 – 2013-07-20 18:26:57

+0

但用戶仍然需要通過惡意應用程序登錄到Dropbox,對吧?所以它必須去:1)以某種方式下載惡意應用程序(在iOS上本身很難); 2)用戶通過惡意應用程序主動登錄到Dropbox; 3)攻擊者可以竊取文件。如果用戶無論如何都要登錄到Dropbox,攻擊者只能提供一個假的「Dropbox登錄」屏幕並以這種方式竊取所有用戶的文件。 – Colen

0

首先,您的關注是有效的。你應該把它放在鑰匙串中。

然而,沒有什麼是完全安全的,甚至沒有鑰匙鏈,因爲Carbonic Acid已經說過。有時候,人們犯了一個重點放在一個安全威脅上而忽視另一個更大問題的錯誤。這很像優化,(除了比性能更難描述安全性)。

你不需要讓你的祕密無法竊取,只是偷取的成本高於其他地方。 Dropbox API鍵並不完全是母雞的牙齒。

+0

這不就是要移動目標嗎?當然,我可以把鑰匙/鑰匙放在鑰匙扣的某個地方,但是所有人要做的就是找到我把它們放在鑰匙扣裏的地方,然後從那裏取出鑰匙。 – Colen

+0

這種類型,但理論上說它比從應用程序中拉出鑰匙串更難。 –

相關問題