我正在玩火base Cloud Messaging ,并尝试通过 POST 请求向我的应用发送通知。我向https://fcm.googleapis.com/fcm/send
发送了以下标头的请求:
Authorization: key=<MY-WEB-API-KEY>
Content-Type: application/json
和我的消息正文。
它有效,这就是问题所在。为什么这不是安全风险?任何进入我的网站并查看源代码的人都可以获取我的 Web API 密钥,并向他们希望的任何用户发送通知。我唯一能想到的是,如果没有 FCM 令牌,他们将无法向任何人发送消息,但随后他们可以向人们订阅的主题发送消息......
我还认为我把这个 API 密钥放在我的网络应用程序中可能做错了什么,但它在 Firebase 控制台中说我应该这样做。
那我该怎么办?我在这里做错了什么吗?
编辑:我与邮递员一起提出了请求,这是它生成的请求:
POST /fcm/send HTTP/1.1
Host: fcm.googleapis.com
Authorization: key=AIza.....vI
Content-Type: application/json
cache-control: no-cache
Postman-Token: 4dd619e9-5852-4cb5-ba64-61be77478736
{
"registration_ids":["<device-token>"],
"notification": {
"title":"Title of your notification",
"body":"content of your notification"
},
}------WebKitFormBoundary7MA4YWxkTrZu0gW--
授权标头中的密钥是我从我的 Web 应用程序配置部分获得的密钥 https://console.firebase.google.com/project/PROJECT-NAME/settings/general/
Firebaser
事实证明,这是Firebase云消息传递服务器中的一个错误,该错误已得到修复。使用客户端配置代码段中的 API 密钥发送现在返回401 - Unauthorized
,您需要 FCM 服务器密钥才能发送消息。
如果您将来遇到类似的安全问题,请考虑向 Google 的漏洞奖励计划或通过 Firebase 支持部门举报。