如果我有一个用于远程SSL身份验证的密码变量,那么存储在源代码中是否安全?
e.g。
NSString * password = @"password";
有更好的方法吗?
更新:很抱歉混淆,我不存储用户密码,相反,我存储的密码用于调用我们自己的后端,所有应用将使用相同的密码。
答案 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 密码:)
你应该存储它的哈希值。