[英]Correct and secure manner of storing in-app-purchases
在设备上存储应用内购买的最佳方式是什么,这样购买也可以离线访问,但购买的安全性不会受到影响?
不要将任何有价值的东西存放在设备上,因为它不可信任,并且很容易被有动机的人妥协。
现在,所有这些都取决于正在购买的商品的类型和价值以及如果商品被泄露会发生什么。
如果它真正有价值,那么使用远程安全服务器来管理安全项目。 在应用程序购买中包括可以由远程安全服务器验证的收据,该服务器直接通过安全连接与Apple的服务器通信。 请参阅此链接以验证商店收据 。
据我所知,安全存储购买资产最方便的方法是使用某种形式的加密。
用户应该能够下载加密资产,应用程序应该动态解密。
但是,请确保以安全的方式存储密钥,因为熟练的黑客可以轻松恢复字符串密钥(在应用程序二进制文件中)。 保护密钥的一种好方法是使用基于服务器的系统进行某种身份验证。 该应用程序将从服务器获取密钥,并仅在解密资产所需的时间内保留密钥。
这种防御机制不是坚不可摧的; 我觉得它足以让大多数用户试图破坏它。
要在设备上解密您的资产,最好使用CommonCrypto 。 它由Apple(使用iOS SDK)提供,因此您无需从头开始构建它,也无需为您的应用程序提供文档(美国法律要求)。 我发现Jim Dovey的Common Crypto包装是使用它的最简单方法。
希望有所帮助。 :)
你需要加密文件,你最好的选择可能是Common Crypto。 为了能够脱机访问数据,您需要将加密密钥存储在设备上。
解决方案是使用密钥链:使用SecRandomCopyBytes
生成足够长度的密钥,并使用SecItemAdd
将其存储在密钥链中。 然后使用该密钥加密数据并以正常方式将其写入设备的本地存储。 当需要从磁盘读回文件时,使用SecItemCopyMatching
从钥匙串加载密钥并使用它来解密数据。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.