【问题标题】:iap receipt validation: securityiap收据验证:安全
【发布时间】:2015-07-16 15:15:38
【问题描述】:

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

if (failedValidation) {
    exit(173);
}

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

    @property (nonatomic, assign) BOOL opaque;
    - (instancetype)init {
        ...
        _opaque = YES;
        ... 
    }
    
    - (BOOL)someVerifyMethod {
        if (self.opaque) {
        ...
        } else {
        // fake block
        }
    }
    

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-16
      • 2016-06-24
      • 2015-11-24
      • 2015-01-08
      • 2012-05-04
      • 1970-01-01
      • 1970-01-01
      • 2014-08-04
      相关资源
      最近更新 更多