当前位置: 首页 > 面试题库 >

暴露GCM SENDER ID有什么后果?

桂飞翼
2023-03-14
问题内容

场景: 假设通过反向工程.apk文件,攻击者获得SENDER ID了应用程序中使用的Push Push
Service服务。攻击者开发了一个相似的假冒应用程序,该程序包名称相同/不同,并且已上传到与Google Play不同的应用商店中。

我的问题: 他/她可以在应用中使用相同的SENDER ID吗?对于安装该伪造应用程序的用户而言,这意味着什么?

相关问题: 谷歌云消息传递安全性)问题似乎有点相似。另外,AndroidGCM的答案是[:相同的发件人ID,可解决更多应用问题,提供了有价值的信息。阅读两个公认的答案,得出的结论似乎是绝对有可能的,这就是为什么建议在PushMessages中不要包含敏感数据的原因。

但这似乎并不是解决问题的方法。我无法理解上述安全失效的影响。


问题答案:

发件人ID(又称GoogleAPI项目ID)未绑定到唯一的应用程序包名称。实际上,多个应用可以使用相同的发送者ID注册到GCM,这将允许使用相同的API密钥将GCM消息发送到所有这些应用。当然,每个应用程序都有不同的注册ID(即使在同一设备上)。

如果某人知道您的发件人ID,则可以使用该发件人ID注册到GCM,但是如果不知道API密钥,他们将无法将GCM消息发送到假应用程序或真实应用程序。当他们注册到GCM时,GCM会收到其假冒应用程序的软件包ID。因此,如果您向真实应用程序的注册ID发送消息,则该消息不会到达虚假应用程序。为了使伪造的应用程序从您的服务器获取消息,它将需要将自己的注册ID发送到您的服务器,并欺骗您的服务器以使其认为它是真实的应用程序。在我们的服务器应用程序中,您必须提及我们的API密钥。如果您想发送任何通知,则需要它。



 类似资料:
  • 然后在运行映像时发布与上面相同的端口: 或发布所有端口,使用 在Dockerfile中公开一个端口有什么意义?是否需要先公开一个端口,然后不发布它?实际上,我希望指定在创建映像时将在Dockerfile中使用的所有端口,然后不再麻烦它们,只需使用以下命令运行它们: 这可能吗?

  • 主要内容:1.概述,2.doExportUrls,3. Protocol1.概述 Dubbo 服务暴露有两种方式 本地暴露,JVM 本地调用。配置如下: <dubbo:service scope=“local” /> <dubbo:service scope=“remote” /> 在不配置 scope 的情况下,默认两种方式都暴露。 2.doExportUrls 本地暴露服务的顺序图如下: 我们看到 ServiceConfig#export() 方法中,会在配置初始

  • 我已经看过了官方文档和许多关于和配置之间区别的StackOverflow问题。我想我理解基本的,但我真的想理解依赖项暴露或不暴露意味着什么。 这就是我目前所得到的。当我发布我的Java库(用Kotlin编写,但不相关)时,发布的文件中的依赖范围要么是使用时的要么是使用时的。 那么在这种情况下公开依赖项真的只是意味着将它们添加到类路径(编译范围)吗? 关于和的许多答案之一是,它仅仅是关于构建优化,如

  • 如果你的服务需要预热时间,比如初始化缓存,等待相关资源就位等,可以使用 delay 进行延迟暴露。我们在 Dubbo 2.6.5 版本中对服务延迟暴露逻辑进行了细微的调整,将需要延迟暴露(delay > 0)服务的倒计时动作推迟到了 Spring 初始化完成后进行。你在使用 Dubbo 的过程中,并不会感知到此变化,因此请放心使用。 Dubbo-2.6.5 之前版本 延迟到 Spring 初始化完

  • EXPOSE 声明端口 格式为 EXPOSE <端口1> [<端口2>...]。 EXPOSE 指令是声明运行时容器提供服务端口,这只是一个声明,在运行时并不会因为这个声明应用就会开启这个端口的服务。在 Dockerfile 中写入这样的声明有两个好处,一个是帮助镜像使用者理解这个镜像服务的守护端口,以方便配置映射;另一个用处则是在运行时使用随机端口映射时,也就是 docker run -P 时,

  • 8.1. 源码暴露 你的WEB服务器必须要能够读取你的源确并执行它,这就意味着任意人所写的代码被服务器运行时,它同样可以读取你的源码。在一个共享主机上,最大的风险是由于WEB服务器是共享的,因此其它开发者所写的PHP代码可以读取任意文件。 <?php header('Content-Type: text/plain'); readfile($_GET['file']); ?> 通过在你的源码所在的