【问题标题】:How can I prevent users from maliciously calling HUAWEI Push Kit's message receipt function API when I use the function?如何防止用户在使用HUAWEI Push Kit的消息接收函数API时恶意调用该函数?
【发布时间】:2020-06-23 02:27:12
【问题描述】:

由于谷歌禁止新的华为设备使用GMS,我应用的华为手机用户经常抱怨收不到通知消息。所以我最近开始使用HUAWEI Push Kit。整合过程顺利。我已经完成了整合,并在华为应用市场上发布了我的应用。用户现在可以接收通知消息了。

但现在我发现了以下与推送数据有关的问题:

使用 FCM,我可以使用 BigQuery 进一步分析消息推送数据,例如发送消息的数量和接收的消息数量。例如,我可以执行以下语句来收集应用发送消息数的统计数据:

SELECT app_name, COUNT(1)
FROM `project ID.firebase_messaging.data`
WHERE
_PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD')
AND event = 'MESSAGE_ACCEPTED'
AND message_id! =''
GROUP BY 1;

看了HUAWEI Push Kit文档,没有找到类似BigQuery的功能。

但是,我找到了消息回执,它也可以用于收集统计数据。因此,我开发了一个收据 API 并在 Push Kit 控制台上进行了配置。经过测试,我现在可以接收推送数据了。

现在,当我计划发布我的应用时,我需要验证调用者,因为消息接收 API 在公共网络上是公开可用的。如何验证调用方以防止恶意 API 调用?

【问题讨论】:

标签: push-notification huawei-mobile-services huawei-push-notification


【解决方案1】:

HUAWEI Push Kit的消息回执功能可以设置用户名和密码进行身份验证。您可以使用此功能来防止恶意 API 调用。流程如下:

  1. 在HUAWEI Push Kit控制台配置消息回执时设置用户名和密码。
  2. 华为在调用您的收据API时,会在HTTP头中添加X-HUAWEI-CALLBACK-ID参数。参数值由以下部分组成:

一个。 timestamp:系统的UTC时间戳。

b. nonce: 随机 UUID。

c。 value:待加密字符串(由timestamp的值、nonce的值和回调用户名组成)使用设置的密码加密后最终得到的字符串HMAC-SHA256算法,然后使用Base64编码。

例如:

timestamp=1563105451261;nonce=a07bfa17-6d82-4b53-a9a2-07cfef5ceef1;value=E4YeOsnMtHZ6592U8B9S37238E+Hwtjfrmpf8AQXF+c=
  1. receipt API接收请求时,可以获取HTTP头中X-HUAWEI-CALLBACK-ID的值,判断调用者是否合法。

欲了解更多信息,请访问Message Receipt

【讨论】:

  • 这如何防止攻击者在他的请求中包含相同的标头?在您描述的内容中,我没有看到任何有关用户和密码的信息。
  • @m0skit0 好的。我添加了有关密码的信息。
  • 谢谢!但是,您链接的文档中没有说明此信息,您有指向此的链接吗?
猜你喜欢
  • 1970-01-01
  • 2013-05-19
  • 1970-01-01
  • 2021-03-29
  • 2019-04-08
  • 1970-01-01
  • 2015-10-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多