没有应用服务器,网络上的FCM是否安全?

时间:2017-01-11 20:17:39

标签: firebase firebase-cloud-messaging

我想从我网站上的客户端生成消息,并将消息发送到目标设备。使用像这样的ajax(jquery)请求很简单:

$.ajax({
    url: 'https://fcm.googleapis.com/fcm/send',
    type: 'POST',
    contentType: "application/json",
    dataType: 'json',
    data: JSON.stringify({
        "notification": {
            "title": title,
            "body": msg,
            "sound": "default"
        },
        "to": "XXXXXXXXXXXX"
    }),
    beforeSend: function(xhr) {
        xhr.setRequestHeader('Authorization', 'key=YYYYYYYYYY');
    }
});

但是,我不需要保留XXXXXXXXXXXX设备密钥,并且YYYYYYYYYY API密钥是私有的吗?如果没有,我担心人们会开始抓住这些并从完全不相关的服务中发送垃圾邮件?

1 个答案:

答案 0 :(得分:7)

这绝对不安全。您传递到Authorization标头的密钥称为服务器密钥,因为您只应该在应用服务器(或其他一些服务器)上使用它你直接控制的过程。)

如果您将相同的密钥放在每个客户端设备上运行的代码中,则意味着恶意用户可以(因此将)能够复制您的服务器密钥并使用该密钥向您的应用发送消息&# 39;用户代表你。

Firebase云消息传递文档在其section on FCM Server roles中对此进行了解释。我们还有blog post that explains how to send device-to-device messages on Android using Cloud Messaging, the Realtime Database and a Node.js script on your back-end, app server