2014-02-10 103 views
0

这关系到
AppStore in-App Purchase Receipt Verification IssuesiTunes的应用程序内购买收汇核销 - 晦涩,JSON

在简短的问题 - 从iTunes收据数据编码有点儿怪,JSON格式没有任何规范它。接受的答案指出,没有必要解码它,它只能发送到iTunes。

在我的情况下,我想解码该数据,以确保bundle_id参数等于我的应用程序bundle_id
https://buy.itunes.apple.com/verifyReceipt方法将收据视为有效,即使它不是为我的应用程序生成的 - 所以如果黑客将从其他应用程序发送的有效收据发送到我的服务器 - 他就会成功。

问题是如何正确地进行这样的验证,额外的步骤当然不是iTunes开发者所期望的(否则他们不会使用伪JSON),但我认为这是保护这种攻击所必需的。
对此有何想法?

回答

1

吉尔,你应该考虑验证不透明的收据数据,而不是试图解释它。发送给Apple的verifyReceipt服务并检查响应。这将是一个非奇怪的JSON对象。如果“status”字段为0,那么Apple认为它是一个有效的收据,但它取决于您的服务器应用程序以确定它是否在有效的上下文中使用。要做到这一点,您可以检查“收据”对象,您可以在许多其他事物中找到捆绑包和产品ID。

如果您决定在发送给苹果公司之前对收据数据进行一些预先验证,那么您也可以做一些额外的工作。它是一个base64编码的JSON对象,它包含两个其他base64编码对象,其中一个是上述的接收数据。这种方法的问题在于数据不打算由Apple服务用户检查,因此如有更改,恕不另行通知。但它可能是一种有用的调试技术。