BillingClient queryPurchases 方法的谷歌文档说明如下:
“出于安全考虑,建议通过调用以下 API 在您的后端(如果有的话)进行购买验证:https://developers.google.com/android-publisher/api-ref/purchases/products/get”
这是链接:
我已经设置了一个 API,从我的服务器建立了与它的通信并进行了一些初步测试,但我对它的研究越多,我就越质疑它的必要性。如果您的代码可以反编译,那么您在后端所做的任何验证都可以在您的应用程序代码中被破坏。
我的理解是谷歌将这些购买缓存在本地设备上并定期刷新缓存,而这个缓存是 queryPurchases 从中提取购买的地方。
通过对这些购买进行后端验证,我到底想阻止哪种类型的攻击?
最佳答案
Google play 处理交易并保留购买记录,您的后端提供购买收据并从 Google 获得响应,用户无法在 Google 的计费系统中注入(inject)虚假记录,这就是您的后端所依赖的,如果用户确实在应用程序项目中购买了您,并且他们的信用卡被谷歌收取费用,那么该记录是可靠的,并且用户无法更改它,即使他们反编译了您的应用程序,除了暴露为一个恶意的 Actor 。在应用程序计费系统中实现良好是无懈可击的,如果不是不可能的话,也是极其困难的。
关于in-app-billing - 用于应用内支付购买验证的后端服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55999385/