如何防止用户在使用HUAWEI Push Kit消息接收功能时恶意调用API?

How can I prevent users from maliciously calling HUAWEI Push Kit's message receipt function API when I use the function?

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

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

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

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;

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

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

现在,当我计划发布我的应用程序时,我需要验证调用者,因为消息回执 API public仅在 public 网络上可用。如何验证来电者以防止恶意 API 来电?

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

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

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

b。 nonce: 随机 UUID。

c。 value:to-be-encrypted字符串(由[=11=的值,[=12=的值],回调用户名组成)使用加密后最终得到的字符串在HMAC-SHA256算法中设置密码,然后使用Base64编码

例如:

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

有关详细信息,请访问 Message Receipt