将 GCM 注册 ID 传递给合作伙伴服务器是否安全
Is it safe to pass GCM registration ID to partner servers
我们有一个 Android 应用程序,我们希望允许多个(50-100 个)第三方向该应用程序发送推送通知。
因此,如果应用用户从一个或多个第三方导入内容,则他们可以接收来自这些第三方的推送通知。
我们认为我们可以通过为每个第三方创建一个 GCM API 密钥来做到这一点,然后在导入内容时我们会将 GCM 注册 ID 传递给第三方的服务器(URL该服务器的内容包含在内容中)。
但是,我们在文档中看到了这一点; "Note that registration tokens must be kept secret." (https://developers.google.com/cloud-messaging/gcm#senderid).
理论上,用户可以从非合作第三方导入内容,此时他们会获得传递给他们的 GCM 注册 ID。这显然可以通过执行查找来停止,因此我们只将 GCM 注册 ID 传递给已知的第三方。
然后在应用程序内处理推送通知,这样只有第三方内容会受到影响,所以这不是真正的问题(此外,我们可以撤销任何滥用它的第三方的 API 密钥垃圾邮件太多更新等)。
为什么只有具有 API 密钥的服务器才能对注册 ID 进行保密?
在上述情况下是否存在问题?即是否将其传递给已知的第三方考虑保密?
注;我们考虑过让所有第三方向我们的服务器发送消息,然后让我们通过 GCM 将该消息传递到应用程序。但我们最好避免这种依赖。
根据deadlydragon00提出的观点:
- Google 帐户上没有任何付费服务。因此,第三方合作伙伴 运行 不存在使用提供的 API 密钥支付账单的风险。
- 显然过度使用推送通知是一个问题,但由于第三方合作伙伴只能使用它来影响他们在我们应用程序中的内容,这会给他们带来不好的影响,所以我们不认为这是一个巨大的担忧(此外,我们会给每个第三方他们自己的 API 密钥,因此可以简单地切断对任何人的访问)。
Why do you need to keep the registration ID secret when only servers
with the API key can do anything with it?
如果您订阅了 Appengine 等任何付费 Google 服务,然后您将您的 RegID 提供给了可能会滥用它的人(如泛滥多个请求),现在请查看您的账单。
And is it a concern in the above scenario? i.e. is passing it to known
third parties considered keeping it secret?
再不给。
如果您想尽可能保密您的 regID,您可以遵循此流程
上图表明
第三方将消息发送到您的服务器(不要直接发送到应用程序)在这种情况下您不需要暴露您的RegID。
information/Data 将被分析并发送到应用程序。
要考虑的解决方案是使用 multiple senders.
To make this possible, all you need to do is have each sender generate its own project number. Then include those IDs in the sender field, separated by commas, when requesting a registration.
我们有一个 Android 应用程序,我们希望允许多个(50-100 个)第三方向该应用程序发送推送通知。
因此,如果应用用户从一个或多个第三方导入内容,则他们可以接收来自这些第三方的推送通知。
我们认为我们可以通过为每个第三方创建一个 GCM API 密钥来做到这一点,然后在导入内容时我们会将 GCM 注册 ID 传递给第三方的服务器(URL该服务器的内容包含在内容中)。
但是,我们在文档中看到了这一点; "Note that registration tokens must be kept secret." (https://developers.google.com/cloud-messaging/gcm#senderid).
理论上,用户可以从非合作第三方导入内容,此时他们会获得传递给他们的 GCM 注册 ID。这显然可以通过执行查找来停止,因此我们只将 GCM 注册 ID 传递给已知的第三方。
然后在应用程序内处理推送通知,这样只有第三方内容会受到影响,所以这不是真正的问题(此外,我们可以撤销任何滥用它的第三方的 API 密钥垃圾邮件太多更新等)。
为什么只有具有 API 密钥的服务器才能对注册 ID 进行保密?
在上述情况下是否存在问题?即是否将其传递给已知的第三方考虑保密?
注;我们考虑过让所有第三方向我们的服务器发送消息,然后让我们通过 GCM 将该消息传递到应用程序。但我们最好避免这种依赖。
根据deadlydragon00提出的观点:
- Google 帐户上没有任何付费服务。因此,第三方合作伙伴 运行 不存在使用提供的 API 密钥支付账单的风险。
- 显然过度使用推送通知是一个问题,但由于第三方合作伙伴只能使用它来影响他们在我们应用程序中的内容,这会给他们带来不好的影响,所以我们不认为这是一个巨大的担忧(此外,我们会给每个第三方他们自己的 API 密钥,因此可以简单地切断对任何人的访问)。
Why do you need to keep the registration ID secret when only servers with the API key can do anything with it?
如果您订阅了 Appengine 等任何付费 Google 服务,然后您将您的 RegID 提供给了可能会滥用它的人(如泛滥多个请求),现在请查看您的账单。
And is it a concern in the above scenario? i.e. is passing it to known third parties considered keeping it secret?
再不给。
如果您想尽可能保密您的 regID,您可以遵循此流程
上图表明
第三方将消息发送到您的服务器(不要直接发送到应用程序)在这种情况下您不需要暴露您的RegID。
information/Data 将被分析并发送到应用程序。
要考虑的解决方案是使用 multiple senders.
To make this possible, all you need to do is have each sender generate its own project number. Then include those IDs in the sender field, separated by commas, when requesting a registration.