gpt4 book ai didi

ios - 验证应用内购买收据的目的是什么?

转载 作者:行者123 更新时间:2023-12-01 17:49:35 29 4
gpt4 key购买 nike

我已经实现了对 SKProducts 的购买,并且从应用商店进行了验证,但我不确定此验证的目的是什么。苹果文档说:

The receipt for an application or in-app purchase is a record of the sale of the application and of any in-app purchases made from within the application. You can add receipt validation code to your application to prevent unauthorized copies of your application from running.

这是否意味着在不验证应用内购买收据的情况下无法声明应用内购买的价格?还是与应用的真实性有关?

最佳答案

@Paulw11 正确地评论道,“坏人可能会侵入您的应用程序或他们的设备以欺诈性地进行应用程序内购买”,但让我详细说明一下。

欺诈性购买的最简单示例可以在用户安装了 Cydia 的任何越狱 iOS 设备上找到。应用名为 iAP Cracker .这让用户可以绕过 iTunes 应用商店进行应用内购买,从而免费获得购买。

iAP Cracker 假设您的应用未验证收据,因此提供虚假收据代替真实收据。

有两种验证收据的方法:本地和远程。

Locally validating收据可以确保 GUID、bundleId 和 opaque value苹果提供的收据与 signature 匹配也随收据一起提供。

欺诈性购买通常采用重复攻击,这些攻击要么使用来自您应用的有效收据,要么使用其他用户在其他日期的有效收据。在这种情况下,bundleId 将匹配,但 GUID 将不匹配。或者来自完全不同的应用程序的收据,例如,我经常看到来自愤怒的小鸟但与我的应用程序无关的收据。因此在这些情况下,bundleId 和 GUID 不正确,因此签名将不匹配。

收据也使用 Apple 的私有(private) RSA key 签名,这意味着如果使用生成的收据进行攻击,PKCS #7 容器签名将无效。

至于Validating receipts remotely ,您可以将 Base64 编码的收据发送到 Apple 的服务器进行验证。您很可能会在服务器端环境中执行此操作。当 Apple 收到收据时,它将验证 PKCS #7 和 bundleId,如果 bundleId 不是您自己的,它将失败,但重要的是要注意它没有验证 GUID 的能力。

然而,远程验证确实具有提供额外信息的额外好处,例如为自动续订订阅购买进行的续订和取消,如果您需要将订阅与您自己的用户相关联,这将很方便数据库。

为了获得最佳安全性,明智的做法是在本地和远程建立收据验证。黑客会入侵,他们将来可能会找到绕过本地验证的方法,但远程验证的攻击媒介仍然很小。

不要低估欺诈性购买发生的频率,我发现 iOS 上的欺诈率高达 30%,Android 上高达 80%。 资料来源:我是一名应用内购买顾问。

关于ios - 验证应用内购买收据的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35294843/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com