2017-02-15 23 views
3

登録されたユーザごとにトピックを作成する設計アプローチがあります。各ユーザのFirebaseトピックの作成

  1. /topics/{user-token}に購読生成されたトークン
  2. で私達のデータベースに新しいユーザにそれを保存
  3. を作成する際にAndroidや iOSデバイス上のユーザログイン。

ユーザーに複数のデバイスがあり、ユーザー固有の通知を送信する場合は、/topics/{user-token}に送信してすべてのデバイスで受信できるようにします。

まだ少数のユーザーで問題は発生していませんが、Firebaseの制限は問題ありません。これは良いアプローチですか?

+0

いいですね。なぜあなたは、あなたがuidやuserIdのための "ユーザートークン"という名前を、Googleエバンジェリストのように与えるのですか? –

+2

ユースケースが複数のデバイスを持つ単一のユーザーの場合、[デバイスグループメッセージング](https://firebase.google.com/docs/cloud-messaging/android/device-group)を使用しないでください。 –

+0

@AL。私はそれを逃しましたが、私たちがそれを使うならグループリストを管理しなければなりません。もし誰かがアンドロイドデバイスからログアウトした場合、私のサーバにリクエストを送りました、それをregistration_idなどで削除してください。トピック '、私はちょうどクライアント側で退会する。私はfirebaseのために大丈夫なら話題を選ぶだろう。しかし、提案に感謝します。 – ocanal

答えて

7

(私は答えに私のコメントを移動しています)

ユーザーごとFCMトピックを作成する時間のほとんどは、良いアイデアではありません。

FCM TOPICSに送信されたメッセージは公開されています。どのユーザー( 別のアプリからでも)は/ topics/{ユーザー名}に登録して、それらのメッセージを受信することができます( )。

例:
別の開発者があなたのAPKからグーグル-services.jsonファイルをコピーすることができます。
その後、彼はどんな話題にでも購読することができます。
ユーザメッセージを傍受するには、攻撃者は{user-name}や使用している他の識別子を推測する必要があります。しかし、これが起きると仮定すれば、誰かがあなたのメッセージのコピーを受け取っているかどうかを決して知らないだろうし、通常{user-name}を変更することはないので、問題は大きい。

これはFCMのセキュリティ上の問題ではありません。これはトピックAPI設計の一部です。
安全なメッセージが必要な場合は、デバイストークンに直接送信できます。

ユーザーごとに1つのトピックを作成する場合は、機密データや第三者が傍受してはならないデータを送信しないように注意してください。

+0

**安全なメッセージが必要な場合は、デバイストークンに直接送信することができます。** –

関連する問題