【问题标题】:What characters can firebase cloud notification token consist of?Firebase 云通知令牌可以包含哪些字符?
【发布时间】:2021-07-21 06:43:33
【问题描述】:

firebase 通知令牌可以包含哪些字符?

官方文档并没有透露太多关于令牌的可能字符:https://firebase.google.com/docs/cloud-messaging/concept-options#credentials

我怀疑我的应用程序的安全性正在阻止某些令牌,因为我在后端看到这些日志消息:

请求被拒绝,因为 URL 包含潜在的 恶意字符串“;”

标记是否可以包含';'字符?

【问题讨论】:

  • 云消息令牌不是 URL,那么是什么让您认为该错误是相关的?
  • 您应该在控制台记录这些令牌,如果它有 ; 可能有人尝试在您的令牌中插入脚本。
  • 因为我将令牌发送到后端,所以它包含在url中

标签: firebase firebase-cloud-messaging


【解决方案1】:

API 合约未指定 FCM 代币的格式,因此您不应尝试依赖此处的细节,因为它们可能会随着时间而改变,恕不另行通知。如果以 URL 格式传递它们,则应将它们视为通用字符串并正确转义它们。

目前,字符包括base 64 encoded strings: 连接,因此字符列表包括A-Za-z0-9+/=:(同样,这可能随时更改,不要试图在您的代码中依赖它)。

不是您提出的问题,但这似乎不太可能是您的错误的根本原因。如果您可以对问题进行最小限度的重现并证明它是由 FCM 服务引起的而不是编码错误,那么可能值得submitting a bug through support

【讨论】:

    【解决方案2】:

    通知令牌应由带有破折号的字母数字字符组成。 错误是报告 URL 本身包含恶意字符,但没有说明从哪里来。

    我将引入一个 catch,它将 URL 及其有效负载编码为一个编码的 URL 字符串并将其保存以供进一步调查,最好是专用于它的实时数据库存储桶。

    然后您可以对 URL 进行解码,以确保 URL 和有效负载是安全的,并且没有其他任何问题。

    Javascript Encode URI Component

    Javascript Decode URI Component

    【讨论】:

    • 我看到令牌有一个字符':',所以不要认为它只是带有破折号的字母数字
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-21
    • 1970-01-01
    • 2015-04-16
    • 2017-12-06
    相关资源
    最近更新 更多