2012-03-09 72 views
2

如果我有一個用於遠程SSL認證的密碼變量,那麼存儲在源代碼中是否安全?保護Objective C源代碼中的敏感信息

例如

NSString * password = @"password"; 

有沒有更好的辦法?

更新:對不起,我的困惑,我不存儲用戶密碼,而不是,我存儲用來調用我們自己的後臺密碼,所有的應用程序將使用相同的密碼。

回答

2

我的新的答案:

儘量不要使用靜態密碼來訪問後端,期。如果某人不想確定密碼是什麼,會發生什麼情況。爲什麼不使用用戶名&密碼?

您還可以考慮使用公鑰或嵌入式證書,以便只允許您的應用訪問後端服務器。

我原來的答覆:

聽起來像是你想結識的鑰匙扣。

下面是談論它的教程:

http://maniacdev.com/2011/07/tutorial-how-to-use-the-ios-keychain-to-store-names-and-passwords/

而且here is a related question that talks about the security of Keychain under iOS

你不應該有計劃爲所有用戶儲存靜態密碼,而是讓每個用戶設定他/她的賬戶&密碼進行驗證,然後儲存東西在鑰匙串。

+0

我已經更新了我的問題,我沒有存儲用戶密碼,而是我正在存儲密碼來調用我們的後端,用戶不知道它。 – Howard 2012-03-09 09:27:54

+0

如果你原來的問題比較清楚,那本來很好。我已經修改了我的答案。 – 2012-03-09 09:39:13

+0

謝謝!但即使使用公鑰,用戶也很容易檢測到,我只是想,如果有更好的方法將其隱藏在代碼中的某處。我不需要有一個完美的方式來做到這一點,只是比存儲一個字符串更好。 – Howard 2012-03-09 09:52:22

0

不!

建立你的應用程序。轉至終端輸入strings,然後你的可執行文件拖動到終端,然後按返回......你會以純文本格式見你祕密密碼:)

你應該保存它的哈希值。

+0

我已經將可執行文件拖放到了'strings'終端,但它一直在加載,沒有任何東西可以被看到。 – Howard 2012-03-09 09:50:46

1

應用程序中包含的任何文本都很容易提取。有沒有真正的解決方法 - 使用strings工具,任何人都可以看到靜態嵌入到您的應用程序中的任何和所有文本內容。但是,有一些解決方法 - 特別是,如果將字符串拆分爲多個靜態字符串並按正確的順序進行連接,則對應用程序中包含的密碼進行反向工程將會困難得多。

我建議你看看類似的問題(How Safe is Information Contained within iPhone App Compiled Code),特別是我對這個問題的回答,以便更深入地解釋我的意思。 (尼姆羅德對這個問題的評論也很有意思。)