快捷搜索:

hga025手机版:Surge 2.0 是如何实现在 iOS 上反盗版的

来源:http://www.workrewired.com 作者:电工电气 人气:52 发布时间:2019-11-09
摘要:随着智能制造在工业4.0浪潮中的普及,模块化设备及柔性化应用日益旺盛,设备要根据生产需求要调整产线工艺配置,相应设备模块就会在线或离线,在该设备上的急停按钮也将存在激

随着智能制造在工业4.0浪潮中的普及,模块化设备及柔性化应用日益旺盛,设备要根据生产需求要调整产线工艺配置,相应设备模块就会在线或离线,在该设备上的急停按钮也将存在激活与非激活的状态。

Apple 非常注重用户的隐私,没有任何可以拿到用户关键隐私数据的 API,或者是需要授权(如通讯录)。我非常赞同 Apple 在这方面的隐私考虑,但这确实给反盗版工作带来了很大的困难。但在激活过程中,Surge 同样非常尊重用户隐私,没有任何用户的隐私数据会被收集。

hga025手机版 1

(其实 iOS 9 中各种 API 限制都已经的非常完备了,想获取也拿不到……)

1. 如何鉴别单次购买行为 (同一 Apple ID)

我们的目的是限制单 Apple ID 大量的用于不同设备上的激活,所以首先需要鉴别某次激活请求是否和另外的请求来源自同一购买行为:

有做过 In App Purchase 的工程师应该知道 receipt 的存在,这是进行 iAP 验证的唯一有效渠道,因为它可由服务器端向 Apple 服务器请求确认,且具有唯一的 ID (transaction_id) 可以防止重放攻击。

Receipt 本身也记录着应用的购买信息,样例如下:

“receipt”: {
 “receipt_type”: “Production”,
 “adam_id”: xxxx,
 “app_item_id”: xxxxxx,
 “bundle_id”: “me.yach.surge-ios”,
 “application_version”: “629”,
 “download_id”: xxxx,
 “version_external_identifier”: xxxxxxx,
 “receipt_creation_date”: “2016–06–30 04:18:37 Etc/GMT”,
 “receipt_creation_date_ms”: “1467260317000”,
 “receipt_creation_date_pst”: “2016–06–29 21:18:37 America/Los_Angeles”,
 “request_date”: “2016–06–30 04:18:39 Etc/GMT”,
 “request_date_ms”: “1467260319862”,
 “request_date_pst”: “2016–06–29 21:18:39 America/Los_Angeles”,
 “original_purchase_date”: “2015–10–26 03:13:07 Etc/GMT”,
 “original_purchase_date_ms”: “1445829187000”,
 “original_purchase_date_pst”: “2015–10–25 20:13:07 America/Los_Angeles”,
 “original_application_version”: “290”,
 “in_app”: []
 }

然而,在针对应用的购买信息中,却少了唯一性的 ID,所以没有办法鉴别该收据是否代表着是同一次购买行为。

但是,仔细观察 receipt,有一个字段其实可以等同于唯一性 ID:original_purchase_date_ms,购买的时间戳。所以,利用该字段,即可按照单次购买行为进行激活限制。

本文由hga025手机版发布于电工电气,转载请注明出处:hga025手机版:Surge 2.0 是如何实现在 iOS 上反盗版的

关键词:

最火资讯