質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

87.37%

FirebaseFirestoreで匿名認証のセキュリティが不安

解決済

回答 1

投稿

  • 評価
  • クリップ 1
  • VIEW 619

score 16

チャットアプリの開発をFirestoreでしているのですが、デフォルトの「allow read write」だと危ないと知り、セキュリティルールの変更を検討しています。

あまり時間をかけられないので、とりあえず認証したユーザーにだけ許可したら大丈夫だろうと思っているのですが、認証は匿名認証でも大丈夫なのでしょうか?セキュリティについてはあまりよくわからないのですが、「攻撃を防ぐために匿名認証させるー>認証しているかで全ての読み取り、書き込みを許可」という方法は効果的ですか?

いちいちログイン機能をつけようとすると、もともと長かったアプリの初期設定がさらに長くなり、ユーザーが離れてしまうのが心配なので、匿名認証を使いたいのですが、可能ですか?

長くなってしまいましたが、よろしくお願いします

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • dyoshikawa

    2019/08/18 01:38

    firebaseは「セキュリティについてはあまりよくわからない」人が手を出して良いサービスではありません。
    Osushiの二の舞になる前にアプリ自体を即刻停止すべきだと思いますが。

    キャンセル

  • qyoeku

    2019/08/18 02:35

    アプリはまだリリース前です。
    初学者ですので恐縮ですが、具体的なセキュリティ上の問題などがあれば教えていただけると嬉しいです。
    なお、個人情報や金銭などは扱っておらず、チャットも基本的にオープンなもの限定なので、osushiのような重大なリスクまではないと考えております。
    その点も含めて、何が問題か・どういう対策が有効なのか教えていただけると幸いです。

    キャンセル

回答 1

checkベストアンサー

0

一般論として少しコメントします。
※ 私が正しいことを言っている保証もないので、鵜呑みにしないで自分でもう一度調べて考えられることをオススメします。

■ 技術的な必然

  • 単一の認証情報(ID/PW)をアプリに埋め込む場合、そのアプリの利用者は自由にその権限を(アプリの実装範囲を超えて)使うことができる可能性があることにまず注意しましょう
  • 逆に、ユーザが個別にユーザ作成・ログインを行う場合は、個別の認証情報が個々のアプリに残ることになるので、ユーザ毎に異なる権限を設定できる余地があります。(余地はあるが、適切に運用していないと当然意味はないですが)。

■ アプリケーション的な話

  • 誰が使うアプリなのか(家族しか使わないなら、単一の認証情報でも良いかもしれない→誰に何を見られても改ざんされても問題ない、とする。アプリも第三者に渡らないように管理する)
  • どういうデータを読み書きするのか(他人にばれたら困るような内容なのか)(秘密のルームが作れるべき、なら単一の認証情報だと難しいかもしれない)
    →→ 例えば、「個人情報はかかないで下さい」とアプリでお願いしていても、書く人がいてそれの管理が不適切で漏洩などあれば、アプリ運用者の問題となることはありそう。

とりあえず認証したユーザーにだけ許可したら大丈夫だろうと思っているのですが、認証は匿名認証でも大丈夫なのでしょうか?

「とりあえず認証したユーザー」というのが何を指すのか次第ですが、それが「単一の認証をアプリに埋め込む」とすれば、
大丈夫かどうかは、上述の「アプリケーション的な話」次第かと思います。
1チャンネルのみのOpenなチャットで、全ての情報が全てのアプリ利用者に開示される仕様なら、問題ないかもしれないです。

「攻撃を防ぐために匿名認証させるー>認証しているかで全ての読み取り、書き込みを許可」という方法は効果的ですか?

これはどういう攻撃を防いでいるつもりかで、効果的かどうかが変わるでしょう。
何かしらのアクセス制御があれば「遊び程度のcracking」を防ぐ効果はあるでしょう。
ただ真面目にいたずらしようとしているケースに対応できるかは、
色々自分で攻撃の種類を想定して考える必要があります。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/08/18 17:44

    そこは色々考えてみてほしいのですが、

    firebase匿名認証
    https://firebase.google.com/docs/auth/web/anonymous-auth?hl=ja

    を見ると要するに、ゲストとしてログインする、ということだと思うのですが、(違うのかな?)

    - 少なくともゲストとしてログインするという権限がある人(≒アプリユーザ)のみが、ゲストアカウントを取得できる
    - そのゲストアカウントでのみ許される操作(読み書き、等)を実現できる

    ということになると思うので、
    例えば、「Crawlerのような(そのアプリを全くしらない)適当なアクセスに対しては、効果的に制限できる」でしょうね。

    でも

    もし「アプリを起動すると自動的にゲストアカウントが作成される」ならば、「そのアプリを自動操作したり、内部のゲストアカウント作成用の情報を抜き出されたりして悪用されると、無制限にゲストアカウントを作られて荒らされるかもしれない」ですね(そんなことをするかは別問題ですが)。
    ※ ソーシャルゲームのリセットマラソンが簡単にできる、みたいな感じですかね...

    キャンセル

  • 2019/08/18 17:49

    あと

    > 「匿名認証させるー>認証しているかで全ての読み取り、書き込みを許可」

    となると、前述したように「(他人に対して)秘密のルームや会話などが(真の意味で)一切存在しないチャットアプリ」になりますね。

    キャンセル

  • 2019/08/18 18:08

    なるほど、ありがとうございました。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 87.37%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る