Ios 服务器接收验证或Apple';s验证控制器.m?
如果我实现Apple的VerificationController.m示例,是否仍然需要进行服务器端收据验证?此外,如果您使用服务器端,那么似乎没有理由实施VerificationController.m,因为您没有通过该设备联系苹果的服务器Ios 服务器接收验证或Apple';s验证控制器.m?,ios,in-app-purchase,storekit,Ios,In App Purchase,Storekit,如果我实现Apple的VerificationController.m示例,是否仍然需要进行服务器端收据验证?此外,如果您使用服务器端,那么似乎没有理由实施VerificationController.m,因为您没有通过该设备联系苹果的服务器 最好的情况是,我宁愿只实现VerificationController.m,因为我没有运行自己的https服务器的好方法。够了吗?该应用程序运行在iOS 5+上,这比它第一次出现时要复杂得多,所以我可能会犯一些微妙的错误,但下面是: 最初的攻击依赖于iOS
最好的情况是,我宁愿只实现VerificationController.m,因为我没有运行自己的https服务器的好方法。够了吗?该应用程序运行在iOS 5+上,这比它第一次出现时要复杂得多,所以我可能会犯一些微妙的错误,但下面是: 最初的攻击依赖于iOS中的两个弱点≤ 5.x:
- 未能检查App Store服务器是否为正版(允许用户/攻击者安装CA证书,从而绕过SSL证书检查)
- 未能检查收据是否对该设备有效
- 对于耗材,服务器需要确保事务只应用于一个帐户;检查设备ID有点多余-攻击者需要在购买者提交交易凭证之前提交交易凭证,这可能涉及购买者提交凭证(不是真正的攻击),也可能是攻击者通过攻击SSL窃取凭证(这意味着要担心的事情要大得多)
- 对于非耗材(如DLC),您还需要验证设备ID。这可以像客户端将其设备ID发送到服务器一样简单-这并不能保护客户端免受黑客攻击,但攻击者可以伪造设备ID或盗用DLC
- 它检查收据验证服务器是否使用EV证书,但不执行任何其他SSL层检查。我不知道用户是否可以安装一个支持EV的CA证书(而且在EV CA被破坏之前不会太久)
- 你必须在应用程序中嵌入收据验证密码(搜索“密码”和“ITC内容提供商共享密码”),这在越狱手机上提取起来很简单。我不确定攻击者会利用它做什么坏事,但肯定的是,秘密的关键在于它是秘密李>
- “以前见过”的交易被视为无效,但在联系收据验证服务器之前,它会将交易标记为“见过”!这意味着您永远无法达到
如果收据验证连接失败,这很容易在3G连接不良时发生。这可能不是非易耗事务的问题(我认为恢复的事务会获得一个新的事务ID),但意味着易耗事务将永远丢失。您可以推迟调用//验证成功。在此处解锁内容。
,直到收据验证成功,但这将在队列中留下不完整的事务-希望它们最终在不向用户收费的情况下过期-[SKPaymentQueue finishTransaction:
- 它信任NSUserDefaults的内容。这是应用程序备份的一部分,易于编辑
- 它假定
返回所有响应数据。服务器和NSURLConnection的实现细节可能是这样,但依赖于此是不明智的-connection:didReceiveData: