保护Objective C源代码中的敏感信息

时间:2012-03-09 09:10:16

标签: iphone objective-c ios xcode ipad

如果我有一个用于远程SSL身份验证的密码变量,那么存储在源代码中是否安全?

e.g。

NSString * password =  @"password";

有更好的方法吗?

更新:很抱歉混淆,我存储用户密码,相反,我存储的密码用于调用我们自己的后端,所有应用将使用相同的密码。

3 个答案:

答案 0 :(得分: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

您不应该为所有用户提供存储静态密码的程序,而是让每个用户设置他/她的帐户&用于身份验证的密码,然后将 内容存储在钥匙串中。

答案 1 :(得分:1)

您的应用程序中包含的任何文本都可以轻松提取。没有真正的方法 - 使用strings工具,任何人都可以看到静态嵌入到您的应用中的任何和所有文本内容。但是,有一些方法可以解决这个问题 - 特别是,如果您将字符串拆分为多个静态字符串并以正确的顺序连接,则对应用程序中包含的密码进行逆向工程将更加困难。

我建议你看看一个类似的问题(How Safe is Information Contained within iPhone App Compiled Code),特别是我对这个问题的回答,以便更深入地解释我的意思。 (尼姆罗德对这个问题的评论也很有趣。)

答案 2 :(得分:0)

NO!

构建您的应用。转到终端并键入strings,然后将您的可执行文件拖到终端并按返回...您将以纯文本形式看到 secret 密码:)

你应该存储它的哈希值。