[IAP] 最近IOS内购伪造防刷单问题,bid(BundleID)能被伪造,

四、receiptData 旧收据伪造问题

[IAP] 最近IOS内购伪造防刷单问题,bid(BundleID)能被伪造,_第1张图片

对于 StoreKit Original API 获取的 receiptData 凭证,苹果在客户端有 2 个 API :

  • iOS 7 之前:transactionReceipt | Apple Developer Documentation (已弃用)
  • iOS 7 以上:appStoreReceiptURL | Apple Developer Documentation

格式区别: 这 2 个 API 获取的 receiptData 凭证,经过苹果 verifyReceipt API 解析后的格式是不同的。

问题: 目前发现, iOS 7 之前的旧凭证 API,黑产能伪造票据中的 Bundle ID !

目前不能伪造的字段:

  • app_item_id:app id,app 在苹果商店的唯一标识
  • item_id:商品 id,内购商店在苹果商店的唯一标识
  • transaction_id:交易 id,苹果的凭证收据的唯一标识(苹果订单号)

建议:

  1. 服务端要校验以上3个不能不能伪造的字段。
  2. 通过 Apple Store Server API 是查询 transaction_id 做二次校验。
  3. 如果 app 本身是通过新票据 API 获取,服务端可以直接拒绝旧票据的交易。

         

各位开发者要注意

苹果 App Store 支付弃用 API 接口兼容和解读 - 掘金苹果WWDC23对verifyReceipt API 弃用,并提供了相应的兼容迁移建议,本文还介绍了receiptData 旧收据伪造问题和苹果新推出的 App Store Server Libhttps://juejin.cn/post/7254373662455185469 

你可能感兴趣的:(服务器,ios,后端,游戏程序)