2017-01-11 12 views
3

自分のサイトのクライアントからメッセージを生成し、ターゲットデバイスにメッセージを送信したい。これは、このようなアヤックス(jqueryの)要求に簡単です:Web上のFCMは、アプリケーションサーバーなしで安全ですか?

$.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

私は、このメッセージを送信してキーを非公開にするようにアプリケーションサーバーに要求を送ることができたことを認識しましたが、Firebaseの主な機能は独自のバックエンドを使用する必要がないということでした。一般的に私はあなたが両方を持つことができるかどうかはわかりません。 – johnb003

+0

誰かがこれを見つけた場合、今や答えがあります! https://firebase.google.com/docs/functions/ – johnb003

答えて

7

これは間違いなく安全です。 Authorizationヘッダーに渡すキーは、サーバーというキーです。これは、アプリケーションサーバー(または直接制御する他のプロセス)でのみ使用することになっているためです。

クライアントのすべてのデバイスで実行されるコードにこの同じキーを入れると、悪意のあるユーザーがサーバーキーをコピーして、そのキーを使用して自分の代わりにアプリケーションのユーザーにメッセージを送信できるようになります。

Firebase Cloud Messagingのドキュメントでは、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もあります。

関連する問題