应用内计费接收器权限

4

背景

我知道在Dungeons清单中(应用内购买示例,对于那些不了解的人)中的接收器没有包括一个权限元素,但是Lint警告我:"Exported receiver does not require permission (...) Without this, any application can use this receiver"

如果我理解正确,一个应用程序可以使用假数据欺骗我(可能是在制作的系统中,不确定),可能会冒充Play应用程序并提供伪造的结算记录。

问题

  1. 这是对的吗?在普通的消费者Android设备上有什么影响?

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

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

评论

我知道这些内容对某些人来说可能过于复杂,但我在考虑理论。 :-)

另外,我不需要清单定义的接收器,所以我从来没有太关注它们。话虽如此,如果我理解不正确,请纠正我。是的,我之前和现在都读过文档。

谢谢。

1个回答

1
交易数据使用与您的开发者账户绑定的唯一密钥进行签名。如果您正确验证这些数据,就没有人可以伪造交易。
至于为什么没有定义权限,Android中签名权限系统的工作方式是这样的:您说“只有使用与发送方相同密钥签名的应用程序才能接收此广播”。由于您的应用程序与Google Play应用程序签名的密钥不同,因此无法使用基于签名的权限,必须公开。
从技术上讲,您可以检查谁发送了广播,获取该UID的包名称并与已知的Google Play包进行比较。随着新版本的发布,这些包通常会更改,并且在某些设备上(尤其是Honeycomb设备)会有所不同,因此这可能不太可扩展并且会给您带来错误警报。

在第一段中,您是指使用非对称加密,并将私钥存储在Google自己的服务器上,对吧?并确保该过程尽可能安全(唯一盐等等)... - davidcesarino
实际上是签名 - 你得到数据和它的签名,但本质上是这样。 - Nikolay Elenkov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接