4

背景

我知道Dungeons 清单中的接收器(应用内计费示例,对于那些不知道的人)不包含权限元素,但 Lint 警告我:“导出的接收器不需要权限 (...) 没有这个,任何应用程序都可以使用这个接收器”

如果我理解正确,应用程序可能会用虚假数据欺骗我(可能在精心设计的系统中,不确定),可能会冒充 Play 应用程序并提供伪造的账单记录。

问题

  1. 是对的吗?对普通的消费类 Android 设备有什么影响?

  2. 我应该写什么来期待正常的行为?我认为这是允许我的接收器仅接收来自合法 Play 应用程序的广播。是com.android.vending.BILLING吗?在这种情况下,我认为欺骗系统可能会声明这一点。这导致3:

  3. 我是否也应该与众所周知的谷歌公共签名进行比较,以避免欺骗系统?

评论

我知道其中一些对某些人来说可能看起来太多了,但我正在考虑这里的理论。:-)

另外,我没有使用清单定义的接收器,所以我从来没有过多关注它们。就是说,如果我说得不对,请纠正我。是的,我之前和现在确实阅读了文档。

谢谢你。

4

1 回答 1

1

交易数据使用与您的开发者帐户绑定的唯一密钥进行签名。如果您正确验证了这些,则没有人可以欺骗交易。

至于为什么没有定义权限,Android中签名权限系统的工作方式是这样的:你说“这个广播只能被与发送者使用相同密钥签名的应用程序接收”。显然,您的应用使用与 Google Play 应用不同的密钥进行签名,因此无法使用基于签名的权限,并且必须公开。

从技术上讲,您可以检查谁发送了广播,获取该 UID 的包名称并与已知的 Google Play 包进行比较。随着新版本的发布,这些往往会发生变化,并且在某些设备(尤其是 Honeycomb 设备)上会有所不同,因此这可能无法很好地扩展并给您带来误报。

于 2012-07-26T03:28:04.477 回答