swift - iap 收据验证 : security

标签 swift security in-app-purchase obfuscation receipt-validation

有一个很棒的post在 StackOverflow 上关于通过收据验证实现应用内购买。但是,出于安全原因,它警告不要按原样使用该代码。在许多教程甚至 Apple documentation 中都能找到这种情绪.例如,它提到不要这样做:

if (failedValidation) {
    exit(173);
}

那太好了,但是您应该如何做这样的事情呢?在此示例中,将验证收据有效或无效,并在无效时退出。

我看到了很多该做和不该做的 list ,但没有太多关于应该做什么的例子或想法。例如使用 opague predicate , 但维基百科没有提到一个具体的例子。

我知道我们不应该都使用相同的代码,但是一些指示(或关于此主题的思考方式)会很有用。我希望有人能够通过这方面的最佳实践来帮助像我这样的初学者。谢谢!

最佳答案

如果您要进行收据验证,那么您可能已经走在了前面。如果您想向某些样板代码添加不透明谓词,您可以这样做:

@property (nonatomic, assign) BOOL opaque;
- (instancetype)init {
    ...
    _opaque = YES;
    ... 
}

- (BOOL)someVerifyMethod {
    if (self.opaque) {
    ...
    } else {
    // fake block
    }
}

但老实说,您可能会等待,看看是否有真正的问题,然后再修复它——这是一个成本/ yield 计算,虽然理论上每个使用相同代码的人都会带来问题,但尚不清楚被利用的风险是特别高。

毫无疑问,对此意见不一,但归根结底,这是一个商业决策,也是一个工程决策。

关于swift - iap 收据验证 : security,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31458194/

相关文章:

ios - Swift:解码 JSON 响应并将嵌套的 JSON 存储为字符串或 JSON

.net - .NET 4.5 中的默认安全协议(protocol)

ios - 在以下情况下应该使用哪个 In App Purchase?

android - 实现 Google 应用内计费 - 哪个 Google 教程是正确的?

swift - 如何从另一个线程提供图像?

ios - JS 对象到 Swift 结构

ios - 用户默认值仅在重启时工作

javascript - 在内容安全策略中使用随机数或哈希值作为内联样式

php - 为什么总是调用 symfony2 安全选民?

ios - 在 IOS 上捆绑应用内购买的最佳方式