iap收据验证:安全性

时间:2015-07-16 15:15:38

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

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

if (failedValidation) {
    exit(173);
}

那很好,但那么你应该怎么做这样的事情呢?在此示例中,将验证收据是有效还是无效,并在无效时退出。

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

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

1 个答案:

答案 0 :(得分:2)

如果您正在进行收据验证,那么您可能已经超前了。如果您想为某些样板代码添加不透明谓词,可以执行以下操作:

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

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

老实说,你可以等一下,看看你是否有一个真正的问题才能修复它 - 它是一个成本/收益计算,虽然每个使用相同代码的人理论上都会产生问题,但它并不是明确有利用的风险特别高。

毫无疑问,对此的看法不同,但最终它的商业决策与工程决策一样多。