我知道 Dungeons清单中的收件人(在应用结算示例中,对于那些不知道的人)不包含权限元素,但Lint警告我:"导出的接收器不需要许可(...)如果没有这个,任何应用程序都可以使用此接收器" 。
如果我理解这一点,应用程序可能会伪造假数据(可能是在精心设计的系统中,不确定),可能冒充Play应用程序并提供伪造的结算记录。
是吗?常规消费者Android设备有什么影响?
我应该写些什么来期待正常的行为?我认为我的接收器只允许接收来自合法Play应用的广播。是com.android.vending.BILLING
吗?在这种情况下,我认为一个欺骗系统可能会声明。这导致3:
我是否还应该与众所周知的Google公共签名进行比较,以避免欺骗系统?
我知道其中一些对某些人来说似乎太过分了,但我在这里思考这个理论。 : - )
另外,我没有使用明确定义的接收器,所以我从来没有太注意它们。也就是说,如果我没有做对,请纠正我。是的,我之前和刚才都阅读了文档。
谢谢。
答案 0 :(得分:1)
交易数据使用与您的开发者帐户绑定的唯一密钥进行签名。如果您正确验证这些,没有人可以欺骗交易。
至于没有定义权限的原因,签名权限系统在Android中的工作方式如下:您说'此广播只能由使用与发件人相同的密钥签名的应用程序接收'。很明显,您的应用使用与Google Play应用不同的密钥进行签名,因此无法使用基于签名的权限,这必须是公开的。
从技术上讲,您可以查看发送广播的人员,获取该UID的包名称,并与已知的Google Play套餐进行比较。这些版本随着新版本的发布而发生变化,并且在某些设备(特别是Honeycomb设备)上有所不同,因此这可能无法扩展得太好而且会给您带来误报。