在Swift中保护敏感数据,例如API /秘密密钥

时间:2019-05-22 03:00:34

标签: ios swift

我很难在使用Swift的iOS开发中寻找保护机密数据的最佳实践。

我已经在我的项目中使用RNCryptor实现了一些加密和解密。而且不确定是否足够。

我需要一些建议或做法,以提高应用程序的安全性。谢谢。

2 个答案:

答案 0 :(得分:0)

敏感数据应存储在KeyChain或Secure Enclave中(如果硬件允许)。

Best practices for iOS applications security

答案 1 :(得分:0)

  

钥匙串是保存敏感数据的安全替代方法,例如   用户名和密码,使用NSUserDefaultsplist或类似名称   方法。

     

您可能已经知道,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)