从客户端验证应用内购买收据

4
我阅读了几乎所有与应用内购买验证相关的答案,实际上我已经以服务器端方式实现了它。但是管理服务器有时可能会太昂贵,在理论上,您可以从应用程序中进行验证:基本上只需向苹果发送一个JSON并获取答案即可。 当然,我知道在越狱设备上,收据可能是假的(这就是为什么要验证它们),但是(请原谅我的无知)为什么我不能相信与苹果服务器的https连接? 我的意思是,如果用户黑掉了我的应用程序,那么就没有真正的方法确保任何事情,但是如果黑客是提供虚假收据的一般方法,那么与苹果的测试是否足够呢?
明确一下,应用内验证收据的安全级别是多少?它能增加一定程度的保护还是毫无用处?

我不是在寻找完成这个任务的代码(当然,我知道如何发送JSON,但总有一些东西需要学习),但我不是安全专家,也不想向客户建议明显错误或无用的解决方案... - il Malvagio Dottor Prosciutto
2个回答

4

这个回答非常好地解释了为什么必须使用服务器端检查来限制一些“通用”破解工具(如“IAP cracker”)的影响;此外,将iTunes json请求链接在您的内容交付API中非常方便,而且响应很快。

当然,如果您的目标是提供一些已经在应用程序中但被锁定的内容,您可能会觉得为此设置一个专门的服务器不方便,但我会要求您进行以下实验:

  1. 创建一个带有一些好内容的应用程序,并将此内容已经锁定在应用程序中(因此不需要内容服务器)
  2. 添加一些分析功能,以跟踪使用此锁定功能的用户数量
  3. 几个月后,比较购买次数与使用付费功能的新用户数量。
  4. 此时,您会清楚地知道添加一个服务器脚本只是为了验证收据是一个好的投资;此外,有一些服务非常便宜(例如:城市空中),我们已经为您完成了此操作,因此您无需为此设置硬件。

我已经读过了,但它只是说“最好这样做”,没有任何真正的解释!我的意思是,建议的解决方案有效且相当可靠,可能比客户端验证更安全,但为了解锁一些已经内置的功能,为什么我不能直接通过https与Apple商店从我的应用程序进行验证呢? - il Malvagio Dottor Prosciutto
IAP破解器声称可以提供IAP解锁,如果没有外部服务器收据检查。它可能做的是通过返回一个有效的收据JSON(“status”=“0”)来伪造与buy.itunes.apple.com的连接;如果它没有这样做,那么对于用户来说,在任何情况下都很容易设置本地DNS以指向一个假的buy.itunes服务器,该服务器始终返回一个有效的收据结果。显然,使用外部验证服务器,像IAP破解器或DNS技巧这样的通用工具对验证阶段没有影响(因此您的应用程序对通用IAP破解更加强大)。 - viggio24
抱歉我这么啰嗦,但你肯定知道iAD是否实现了本地DNS黑客攻击,还是只是一种假设?因为我读到它“只是”黑进应用内调用,而不是整个https层... - il Malvagio Dottor Prosciutto
我认为IAP破解器并没有实现DNS黑客攻击,这超出了它的范围,它只是破解应用内调用。无论如何,在越狱设备上更改DNS设置对它来说很容易,所以我认为这种可能性是现实的。 - viggio24
我明白了。无论如何,如果我的客户不想管理专用服务器,我会建议他们使用Urban Airship这样的客户服务(顺便问一下,您知道其他可靠的服务吗?)。 - il Malvagio Dottor Prosciutto
显示剩余2条评论

0

我入侵应用内购破解程序并发现一种在客户端封堵它的方法:它所创建的收据和交易ID具有可预测的模式,很容易被发现。我在这里放了所有细节: 在客户端检测假收据 更新

希望这能帮到你


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接