如何防止用户在使用华为推送套件的消息接收功能API时恶意调用该功能API?



由于谷歌禁止华为新设备使用GMS,我的应用程序的华为手机用户经常抱怨他们无法收到通知消息。所以我最近开始使用华为推送套件。集成过程很顺利。我已经完成了集成,并在华为应用市场上发布了我的应用程序。用户现在可以接收通知消息。

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

使用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;

我阅读了华为推送工具包文档,但没有找到类似于 BigQuery 的功能。

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

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

华为推送套件的消息接收功能允许设置用户名和密码进行身份验证。您可以使用此函数来防止恶意 API 调用。流程如下:

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

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

二.nonce:随机UUID。

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

例如:

timestamp=1563105451261;nonce=a07bfa17-6d82-4b53-a9a2-07cfef5ceef1;value=E4YeOsnMtHZ6592U8B9S37238E+Hwtjfrmpf8AQXF+c=
  1. 收到请求时,接收 API 可以在 HTTP 头中获取X-HUAWEI-CALLBACK-ID的值,以检查调用方是否有效。

有关更多信息,请访问消息收据

最新更新