1

StackOverflow 上有一篇很棒的文章,介绍了使用收据验证实现应用内购买。但是,出于安全原因,它警告不要按原样使用该代码。在许多教程甚至Apple 文档中都可以找到一种情绪。例如,它提到不要这样做:

if (failedValidation) {
    exit(173);
}

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

我看到了很多应该做和不应该做的事情的清单,但没有太多关于应该做什么的例子或想法。例如使用一个不透明的谓词,但维基百科没有提到一个具体的例子。

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

4

1 回答 1

2

如果您正在做收据验证,那么您可能已经走在了前面。如果你想在一些样板代码中添加不透明的谓词,你可以这样做:

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

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

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

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

于 2015-07-17T15:18:11.773 回答