我正在Swift中开发一个简单的iOS应用程序,它使用我付费的API。我没有大量的资源,还没有找到一个简单/最新的解决方案来解决这个问题。我想保护我的API密钥,而不是把密钥直接放在我发出请求的代码中(我听说这是最佳实践)。保护我的API密钥免受有人拆解我的代码并使用它的最简单方法是什么?
我听说过一些关于使用钥匙扣的事情,但我不确定这是否是最好的路线。
class APIService {
static let shared = APIService()
private let token = "(my token goes here)"
//...various API request functions
}
没有简单的方法,也没有办法完全保护它们免受攻击者的攻击。你总是可以做一些简单的密钥混淆或将它们存储在服务器中,但是如果黑客可以逆向工程你的代码,他们可能会逆向工程你的混淆。
如果有人确实拿到了你的密钥(数据库备份等),最好制定安全措施。
当我最初为我的一个应用程序研究这个主题时,这个链接帮助了我。
NSUserDefaault
对于保存NSNumbers或NSStrings等小数据,甚至保存保存用户名状态的记住我选项都简单有效。NSUserDefaault
无法安全存储,因为它很容易被黑客入侵。**“代表应用程序和安全服务安全存储小块数据的加密容器。”“简单地说,就是存储在文件系统中的数据库。”**
钥匙扣文档
这是Swift版本的示例,使用KeyChain存储和检索数据的简单方法
https://stackoverflow.com/a/37539998/1244403