首页 文章

iTunes应用内购买收据验证 - 模糊-JSON

提问于
浏览
1

这个问题与
AppStore in-App Purchase Receipt Verification Issues

简而言之 - 来自iTunes的收据数据以奇怪的有点JSON格式编码,没有任何规范 . 接受的答案表明没有必要对其进行解码,必须将其发送到iTunes .

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

问题在于如何正确地进行这样的验证,iTunes开发人员肯定不会采取额外措施(否则他们不会使用伪JSON),但我认为有必要保护这些攻击 .
有什么想法吗?

2 回答

  • 0

    吉尔,你应该考虑你正在验证不透明的收据数据,而不是试图解释它 . 将其发送到Apple的verifyReceipt服务并检查响应 . 它将是一个非奇怪的JSON对象 . 如果“status”字段为0,则Apple认为它是有效的收据,但由您的服务器应用程序决定是否在有效的上下文中使用它 . 为此,您可以检查“收据”对象,您可以在其中找到许多其他内容中的包和产品ID .

    如果您在发送给Apple之前决定对收据数据进行一些预验证,那么您也可以通过一些额外的努力来做到这一点 . 它是base64编码的JSON对象,包含两个其他base64编码对象,其中一个是如上所述的收据数据 . 此方法的问题是Apple服务用户无法检查数据,因此如有更改,恕不另行通知 . 然而,它可能是一种有用的调试技术 .

  • 1

    如果您使用的是iOS7,则可以使用设备上的方法进行收据验证,包括bundle_id验证 . 看看 - iOS InApp Purchase Receipt Validation iOS 7A complete solution to LOCALLY validate an in-app receipts and bundle receipts on iOS 7 . 我假设您正在谈论设备上的验证,而不是使用您自己的服务器来处理验证 .

相关问题