如何保护 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

NSUserDefaults 在 Mac OS X 上的哪里存储数据?

bzoj2965: 保护古迹

如何重新启动应用程序上的所有数据? [复制]