在iOS代码中嵌入API凭据中提出的答案对我来说不是一个选项。
我的应用程序通过HTTPS与后端SOAP API通信。我的API证书将在每个请求中发送。
我无法控制服务器实现,因此无法添加中间身份验证服务器并迁移到基于令牌的实现。
因为我必须将我的凭据嵌入我的应用程序的二进制文件中(我知道原则上这远非理想),我正在寻找最佳实践,使我的凭据尽可能安全
根据我所读到的内容,我收集到:
-
不要在外部文件(如
.plist
)中包含凭据 -
不要将凭据包含为简单的
NSString * const
声明。(使用char *
更安全吗?) -
不要做一些显而易见的事情,比如把我的凭据放在一个名为
AuthenticationKeyManager
的Objective-C单例中
我也看过这篇文章:http://applidium.com/en/news/securing_ios_apps_debuggers/
=>tldr:在main.m
中添加发布模式代码,以防止在附加调试器的情况下运行应用程序
注意:我是能够实现SSL钉扎。
我是否可以采取其他措施来保护我的访问凭据?
下面介绍了如何创建和使用加密的plist:http://aptogo.co.uk/2010/07/protecting-resources/
但它的aes密钥存储在static NSString *sharedKey;
中