我很难在使用Swift的iOS开发中寻找保护机密数据的最佳实践。
我已经在我的项目中使用RNCryptor实现了一些加密和解密。而且不确定是否足够。
我需要一些建议或做法,以提高应用程序的安全性。谢谢。
答案 0 :(得分:0)
敏感数据应存储在KeyChain或Secure Enclave中(如果硬件允许)。
答案 1 :(得分:0)
钥匙串是保存敏感数据的安全替代方法,例如 用户名和密码,使用NSUserDefaults,plist或类似名称 方法。
您可能已经知道,NSUserDefaults简单有效 将小的,简单的数据位(例如NSNumbers或NSStrings)保存到 您设备的文件系统。但是这些数据绝不能安全地存储 因为黑客可以从设备轻松访问它。
Apple提供了Keychain Services API来解决此问题 并帮助开发人员构建可安全处理密码和其他内容的应用 敏感信息。
在Apple的documentation中,钥匙串定义为:
钥匙串很棒,因为会自动进行数据加密 将其存储在文件系统中之前,无需浪费 时间建立加密算法。
可以将OS和iOS中的钥匙串配置为锁定。锁定时 无法访问和解密存储的钥匙串项目。对于iOS 当设备被锁定时,钥匙串被锁定;当设备被锁定时,钥匙串被锁定。 设备已解锁。即使解锁,只有具有 创建的项目可以访问它,除非另行配置。
钥匙串还提供其他功能,例如:
访问钥匙串项目 跨应用程序。通常,应用只能访问其创建的项目,但 可以进行配置以使其访问一组 指定的应用程序。
Securing user data with Keychain for iOS
使用
Apple自己的钥匙串包装器称为GenericKeychain,可在Objective C和Swift的示例代码中找到。
SwiftKeychainWrapper by Jason Rendel(jrendel)
SAMKeychain by Sam Soffes for Objective C.
Locksmith by Matthew Palmer for Swift. (Check out the video tutorial)