我的服务器如何安全地验证iPhone应用内购买?
请看苹果公司的图表,了解最新情况 在第9步中,服务器如何知道它正在与有权购买的iPhone通话,并且Eve没有使用不诚实获得的收据进行重播 收据可能是有效的,但这不能证明发件人是有权利的一方 iPhone上有没有可以用来签署收据的设备证书我的服务器如何安全地验证iPhone应用内购买?,iphone,authentication,iphone-sdk-3.0,certificate,in-app-purchase,Iphone,Authentication,Iphone Sdk 3.0,Certificate,In App Purchase,请看苹果公司的图表,了解最新情况 在第9步中,服务器如何知道它正在与有权购买的iPhone通话,并且Eve没有使用不诚实获得的收据进行重播 收据可能是有效的,但这不能证明发件人是有权利的一方 iPhone上有没有可以用来签署收据的设备证书 有没有办法将回执绑定到设备,或者将回执绑定到iTunes帐户和设备,以便服务器可以验证?苹果提供的易受攻击的方法 服务器可以通过以下方式验证购买: iPhone应用程序在购买后会收到一条消息。让iPhone对其进行编码(您可以使用此开源软件)并将其发送到您的服
有没有办法将回执绑定到设备,或者将回执绑定到iTunes帐户和设备,以便服务器可以验证?苹果提供的易受攻击的方法 服务器可以通过以下方式验证购买:
接收数据
,base64编码为https://buy.itunes.apple.com/verifyReceipt
使用HTTP POST。(有关如何使用各种服务器端语言执行此操作的说明)status
是一个整数,receive
是重复的回执- 已验证为新的(不在DB中且有效)
- 过去已验证(数据库中已存在相同的UUID和收据对)
- 由于产品id错误而被拒绝
- 由于已将收据与另一个UUID一起使用而被拒绝
如果收据还包含iTunes帐户信息,则身份验证可以使用该信息允许用户在所有设备(但不是他们的朋友)之间共享内容。我认为这无法将收据绑定到设备
我的理解是,您可以在多个设备上安装应用程序,而无需额外费用。将其绑定到设备意味着,例如,如果您升级/更换手机,您需要再次购买所有应用。我相信,如果您无法读取用户的苹果ID,您唯一的防盗版保护将是跟踪(当然是服务器端)每个事务id的下载请求数,如果超过某个值,则限制这些请求数 因此,如果将其限制在50,用户就可以在多台设备上部署应用程序及其内容并进行多次恢复,但对于任何想要发布盗版版本并获得无限恢复的有效收据的人来说,这都是一个合理的余地。当然,他们可以发布一个包含你所有内容的版本,但你对此无能为力,至少他们不会让你的服务器负担过重。UDID不再有效 贝尼奥特的答案是伟大的,然而,这些天,正如乔·德安德里亚所提到的,UDID被弃用了,而我最后一次尝试的时候,一个应用程序