客户端应用程序成功执行应用内购买并从iTunes接收收据。然后,客户端将此收据发送到服务器,服务器使用Apple验证它,如果成功,则为客户端解锁一些内容。
是否可以在 IAP购买请求中插入额外数据,以使收据或收据验证包含此值?
我正在尝试阻止中间人/数据包嗅探类型黑客即如果有人要发现另一个人的收据并对其进行验证我的服务器,服务器怎么知道这个收据不是由这个验证的人生成的?
从Apple的IAP documentation,验证响应中有许多值返回。我可以使用version_external_identifier
值吗?它的用途或价值是什么?
由于
答案 0 :(得分:0)
version_external_identifier
唯一标识应用程序修订的任意数字。沙箱创建的收据中缺少此密钥。
这真的回答了你的问题;它是一种确定应用程序修订版本的方法。您可以拥有相同的版本号,但可以使用多个版本,这样就可以实现该版本和IAP。
是否可以在IAP购买请求中插入额外数据,以使收据或收据验证包含此值?
最终,没有。 Apple控制收据及其内容。如果您遵循文档中的指导原则(请参阅this以获取更多信息以及您发布的链接),您可以对抗中间人攻击的人(Apple会考虑这一点)。确保与服务器和Apple的连接是HTTPS。
一个中间人代表某个人购买的东西无论如何都有点无实际意义;购买请求与Apple ID相关联,这意味着中间人需要知道他们的凭据。