在应用程序计费和替换公钥.这有什么大不了的



Google的文档中写到:

为了保护您的公钥免受恶意用户和黑客的攻击,请不要这样做将其作为字面值字符串嵌入任何代码中。相反,构造或使用位操作(例如,XOR(使用其他字符串)来隐藏实际的键。关键是不是机密信息,而是你不想让它轻易泄露黑客或恶意用户将公钥替换为其他密钥。

但是验证过程调用了存储私钥的谷歌服务器,所以如果他们替换了密钥呢?无论如何,它都会被调用到Google服务器

拒绝。

或者这是否意味着黑客也修改了apks代码,并将对谷歌服务器的调用替换为对其私人服务器的调用?如果是这种情况,那么让公钥可见是最小的问题。

我错过了什么?

公钥(或许可密钥)用于从INAPP_PURCHASE_DATA JSON对象创建INAPP_DATA_SIGNATURE

智能IAP/IAB破解者可以使用自己的私钥创建自己的INAPP_DATA_SIGNATURE。如果你的公钥在应用程序中是硬编码和未混淆的,它可以用自己的公钥替换它,使任何客户端验证都能返回真值。

当然,任何服务器端验证仍然会失败,Google Play Developer API甚至无法识别购买令牌。但是Google声明的重点是强调仅客户端验证的危险和攻击向量。 如果你的应用完全依赖于客户端验证,那么它可能会暴露在潜在的IAP欺诈中。

最新更新