如今是移动互联网时代,智能手机几乎可以完成所有想做的事情。感谢数以百万计的应用程序,它们可以帮助我们完成所需的事情。无论是维护您在旅途中管理财务信息的时间表,所有事情都可以通过运行在我们智能手机上的移动应用来完成。由于这些应用程序可以访问大量机密信息,因此作为开发人员,在我们开发应用程序时,我们需要遵循最高的安全标准,以使没有资格获得此信息的人无法访问这些信息。
对于iOS设备,每天有超过十亿的活动设备在使用iOS应用程序。在这里,我正在编译iOS开发人员在开发应用程序时应牢记的各种安全实践。
1.在移动应用中启用ATS
随着iOS 9和ELCapitan的发布,苹果公司发布了ATS,该应用程序强制应用程序仅连接到安全网络。这意味着应用程序与外界的任何连接都必须使用HTTPS协议和TLS1.2。
换句话说,ATS强制应用程序仅建立安全连接,而不使用HTTP。如果需要,可以通过在plist中进行显式输入来明确提及异常。
2. SSL证书固定
此技术对于应对MITM攻击非常有效。SSL在“信任链”的基础上工作。当应用程序/客户端连接到服务器时,客户端将检查接收到的服务器的SSL证书是否受任何SSL证书颁发机构的信任。
这样可以确保应用仅与指定服务器通信。App / Client捆绑了指定服务器的SSL证书,因此它可以与连接到服务器和本地证书时收到的SSL证书匹配。详细信息仅需一篇文章。请继续关注,将来我将就这些细节撰写一篇文章。
3.将信息存储在KeyChain中,而不是NSUserDefaults中
NSUserDefaults为我们提供了一种方法,可以保存在应用程序启动和设备重启之间需要保留的少量信息。保存为UserDefaults一部分的所有信息均以纯文本格式保存在plist中,该列表未加密,任何有权访问该设备的人都可以读取。
如果我们想以加密形式保存信息,则需要使用KeyChain,这是一个加密容器,用于存储应用程序和安全服务的密码。Apple在Mac OS和iOS中使用相同的技术进行密码管理。
4.避免将机密信息作为代码存储库的一部分
任何秘密信息都不应成为存储库/代码库的一部分,而应使用在构建应用程序时注入的配置文件或环境变量。Xcode Config文件是一个不错的选择,该文件维护与特定目标有关的信息。一个使用案例是API密钥,我们不应该将API密钥作为代码库的一部分。我们可以使用包含API密钥的配置文件。该文件可以在公司网络内部托管,并且在构建应用程序和作为构建过程的一部分注入时可以读取。
5.越狱检测
黑客只需在越狱设备上花费很少的精力,就可以轻易地破坏应用程序的行为和逻辑。作为开发人员,我们需要确保使黑客尽可能难以获取应用程序的内部细节。我们绝对应该添加逻辑,以在启动应用程序时首先检查越狱设备。并通知用户后,可能会终止该应用程序。
6.仅调试日志
开发人员使用调试消息作为记录应用程序行为的好方法。在开发应用程序时,这非常有用。在开发应用程序时,我们倾向于记录一些信息以帮助开发人员构建功能。但是,如果黑客可以访问它,则可以暴露该机密信息和该应用程序的内部运行情况。为了确保我们不会在提交到存储的应用程序的版本上记录消息,我们只需执行以下操作即可对应用程序处于调试模式下的日志进行基本检查。
#if DEBU
Gprint("log")
#endif
我们可以更进一步,制作一个记录器,该记录器将处理通过它的每个日志。请继续关注,我将单独写一篇详细的文章来介绍这一点。
7.第三方图书馆的使用
第三方库是避免在移动应用中重新创建很多我们想做的事情的好方法。它们无疑为我们节省了很多时间,同时在使用第三方应用程序时需要注意一些事项。这些库始终有将有害代码注入我们的代码库的风险。
8.文件数据保护
每当我们在应用程序中保存任何文件时,都应使用这些选项来保存信息是一种安全的方法。
· 全面保护
· 除非打开,否则受保护
· 在首次用户身份验证之前受保护
· 无保护
9.屏幕录制和捕获
通过屏幕记录或屏幕快照,可以从应用程序中暴露很多敏感信息。此安全检查在银行应用程序中起着至关重要的作用,如果执行屏幕截图或屏幕录制,安全交易细节可能会受到损害。
上述就是关于如何保护iOS应用程序的网络安全的全部内容,想了解更多关于网络安全的信息,请继续关注中培教育。