真的是一个小众问题。当我说“安全”时,我不是说SSL。

基本上,我一直在努力将C2DM推送消息添加到我的应用程序中,并且在我的测试台上,这一切都很好,并且可以收到通知。我正在遵循此指南:
http://blog.mediarain.com/2011/03/simple-google-android-c2dm-tutorial-push-notifications-for-android/

现在,我对此表示满意,并且我完全理解它,我的问题是将设备的唯一ID传递到正在转发消息的Web服务器。举例来说,为了将设备ID添加到我的ID消息数据库中,它会像这样进行调用:
http://www.example.com/add_id?id=unique_id_here

哪个将ID插入到我的数据库中,并将其添加到我可以向其发送消息的设备列表中,如何阻止有人访问该URL并通过提交虚假ID来填充我的数据库?有什么方法可以验证我在那里收到的数据,或验证连接来自我的应用程序?

最佳答案

注意现在编辑此命令可获得更明显的答案。我的原始答案在最后,以防万一有人觉得有用

这实际上很简单。以POST形式发送消息,并提供某种形式的数字签名。这可能和(消息+秘密)的MD5哈希一样简单。当您收到POST时,执行相同的哈希,并且如果哈希匹配:


它来自您的应用
它来自某人对您的应用程序进行反向工程


遗憾的是,不可能完全排除第二种情况,您所能做的就是混淆代码以提高标准,并监视服务器中的可疑活动。



旧答案

原则上什么都没有;网络和手机制造商通常会出于隐私保护和法律的考虑,确保特定设备不会发送识别标头。即使这些存在,它们也可能被伪造。

您需要以某种方式对客户端进行身份验证。这可以通过以下几种方法之一来完成:


每个设备的唯一设备用户名/密码作为一次性配置。
通过SMS分配的每个设备的唯一ID(需要设备的电话号码和应用的SMS权限)
每个设备通过License Manager APIs的唯一ID(未经调查,但几乎可以肯定存在,因为每个客户端都是单独获得许可的)


我以为假数据只是与错误的设备相关联的一个问题,并且有人破坏自己的数据是奇怪的,但没有问题。

10-04 12:31
查看更多