push-notification - 如何防止用户在使用HUAWEI Push Kit的消息接收函数API时恶意调用该函数?

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

由于Google禁止新的华为设备使用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 在公共(public)网络上公开可用。如何验证调用者,防止恶意API调用?

最佳答案

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

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

a. timestamp:系统的UTC时间戳。

b. nonce:随机UUID。

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

例如:

timestamp=1563105451261;nonce=a07bfa17-6d82-4b53-a9a2-07cfef5ceef1;value=E4YeOsnMtHZ6592U8B9S37238E+Hwtjfrmpf8AQXF+c=
  • 接收请求时,接收API可以获取HTTP头中X-HUAWEI-CALLBACK-ID的值来检查调用者是否有效。
  • 欲了解更多信息,请访问Message Receipt

    关于push-notification - 如何防止用户在使用HUAWEI Push Kit的消息接收函数API时恶意调用该函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62526354/

    相关文章:

    node.js - 如何在 sails js 中配置 Node 推送服务器?

    iOS Swift - 推送通知 : Save all Remote-Notifications in a Database (also while App is terminated)

    android - 自定义启动器不再作为华为设备中的默认启动器

    c# - 华为。使用 Push Kit 从通知中获取数据(标题、正文、发送时间)。 Xamarin 表格

    cordova - 使用 Cordova 检测设备是否可以访问华为应用程序库

    firebase - 当应用程序在后台(最小化)时,推送通知不起作用 - iOS

    ios - 使用 UrbanAirship iOS SDK 推送通知的自定义方法

    android - 我的手机调用HMS Push Kit服务端API后收不到任何消息。 SDK版本为4.0.3.300

    android - Flutter项目添加华为agconnect后构建失败

    android - com.huawei.hms :push:5. 3.0.301 中不推荐使用 "AGConnectServicesConfig"类