如何保护 NSUserDefaults 上的整数数据免遭黑客攻击?
Posted
技术标签:
【中文标题】如何保护 NSUserDefaults 上的整数数据免遭黑客攻击?【英文标题】:How can I protect integer data on NSUserDefaults from hacking? 【发布时间】:2014-04-04 12:47:21 【问题描述】:我在 App Store 上的应用程序中有付费内容。我使用以下代码保存它:
paidContentCount = [[NSUserDefaults standardUserDefaults] integerForKey:@"paidContentCount"];
但是破解它很容易。如何保护整数数据免受黑客攻击?
【问题讨论】:
【参考方案1】:切勿在NSUserDefaults
中存储此类设置!使用 ios 钥匙串。这是wrapper,它是最重要的工作部分。
除此之外,您还可以阅读 Ray Wenderlich 的 this article - 有很多关于基本安全的好主意。
【讨论】:
它更复杂,而且没有一种方法是完全安全的——如果有人想破解你的应用程序——他肯定会这样做。 它只是一个简单的整数值。实在不想用第三方组件来保存…… etolstoy,你是对的,它不会完全安全。但我想找到一个简单的方法。 @Altaveron 如果您想让它尽可能简单,请将整数值替换为字符串,您可以在应用程序中对其进行硬编码。对于攻击者来说,它不像 NSUserDefaults 中的整数值那么明显。此外,不要忘记将 Key 名称更改为棘手的名称。 我应该检查“自上次提交此应用程序以来,您是否添加或更改了加密功能?”如果我使用 iOS 钥匙串,在 iTunes Connect 上选择“是”?【参考方案2】:您可以尝试使用[NSString hash]
方法将您的内容保存为字符串,并在您的应用加载后,将付费内容的哈希值与来自NSUserDefaults
的值进行比较
更新:忘记了 [NSString hash]
返回 NSInteger
【讨论】:
以上是关于如何保护 NSUserDefaults 上的整数数据免遭黑客攻击?的主要内容,如果未能解决你的问题,请参考以下文章
NSUserDefaults 线程在 IOS 上的扩展之间共享数据是不是安全?
iOS 8,9 上的 NSUserDefaults 有多安全?
从 iOS 上的 React Native 应用程序访问 NSUserDefaults