在Android Documentation中有以下建议:
安全建议:好的做法是传入一个字符串
帮助您的应用程序识别进行购买的用户,因此
您以后可以验证该商品是否合法购买
用户。对于消耗品,您可以使用随机生成的字符串,
但是对于非消耗性物品,您应该使用唯一的字符串
识别用户。
生成此字符串的最佳实践是什么?
最佳答案
单独使用该应用程序时,最好的方法是
使用混淆的Google Play LVL用户ID,并在分隔符后使用
添加安全的随机信息(也称为随机数),并根据您的需要,
您可以添加其他信息来标识例如时间点
这样,你可以
关联LVL和IAB信息,以及
与没有随机数的情况相比,IAB服务响应的安全性更高
仍然存在以下漏洞:
Having your app check LVL/IAB is insecure in general因为检查原则上可以在逆向工程之后被覆盖。
在创建购买意图时(而不是根据有效性请求本身)设置了IAB随机数,因此无法验证您获得的响应是否不是来自重播攻击。
IAB V3 information is cached inside the IAB service on the Android device,因此甚至无法保证您会获得最新信息。如果设备处于脱机状态,或者服务确定不需要立即重新验证缓存信息的有效性,则该服务将以静默方式将缓存信息传递给应用。
进一步提高安全性的唯一方法是use a server-based approach for LVL/IAB validation.