例えば、firebaseが提供しているgoogleプロバイダーの認証機能を使って、GETしたユーザーのuidを
Usersコレクションの中のdocumetのidとして扱うとします。
この際に、ユーザーのプロフィールページのurlに、このuidを使うような設計は
セキュリティ的にいかがなものかと思いました。
確かに、ユーザーのemailとpasswordを知らないと、uidを知っていても、ユーザーの情報を扱えないという意見は
あります。
しかし、少ないからず、ユーザーのセキュリティを弱くしてしているかもしれないという懸念があることと、
googleの認証プロバイダーを使うケースでは、勝手にuidを公開状態にしたことになると思います。
セキュリティ的に問題ないでしょうか。
よろしくお願いいたします。
以下のような質問にはグッドを送りましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
グッドが多くついた質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
下記のような質問は推奨されていません。
- 間違っている
- 質問になっていない投稿
- スパムや攻撃的な表現を用いた投稿
適切な質問に修正を依頼しましょう。
回答2件
4
ベストアンサー
セキュリティ的に問題ないでしょうか。
問題ないです。
ユーザーを識別するためのIDに過ぎないからです。
そのIDを知ったところでその人になりすますことはできません。
なのでこの質問に関しては
確かに、ユーザーのemailとpasswordを知らないと、uidを知っていても、ユーザーの情報を扱えないという意見はあります。
この意見しかありません。
Firebaseだからといって難しく考えすぎなのかなと思います。
例えばですがAirbnbはご存知でしょうか。
別に知らなくても良いのですが、以下の{id}の部分に適当な「数字」を入力してブラウザでアクセスしてみてください。
https://www.airbnb.jp/users/show/{id}
IDに紐づくユーザーのプロフィールが確認できたかと思います。
では次に、このIDだけを使ってその人のプロフィールを適当な文字列で更新してしてみてください。
できましたか?
できないですよね。単純にそういうことなんです。
googleの認証プロバイダーを使うケースでは、
どの認証プロバイダを使おうがuidは、上記の通りユーザーを識別するためのIDに過ぎません。
その人になりすまして何かをするためには、その人の認証情報でログインする必要があります。
<補足>
認証後の一時トークンに関してはmiyabi-sunさんが回答している通りです
投稿2019/01/24 07:29
総合スコア4254
1
uidってなんじゃ?と思って調べてみました。【二度目】
https://firebase.google.com/docs/auth/admin/manage-users?hl=ja#create_a_user
Firebase Authentication によって生成されます。
つまり、Webサービス毎にFirebaseのアカウントを切ればその度に一意なuidが作られるんですね。
つまり、悪意のユーザーがAさんのuidを盗みだして、他のFirebaseサービスに持っていっても
他のFirebaseサービスは「そんなユーザー知らねえよ」と返してくるんですよね。
であれば、連番のユーザIDを使うより「よっぽど安全」ですし、むしろ積極的に使い倒したほうが良いでしょう。
自分にしか見せては行けないデータは、
ログインしている現在ユーザと対象のuidを突合させて、一致するときだけ扱えるようにしておけば十分だと思います。
投稿2019/01/24 04:33
編集2019/01/24 07:40総合スコア21039
良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
このような回答には修正を依頼しましょう。
回答へのコメント
関連した質問
Q&A
解決済
GAS 文章をスプレッドに書き込む方法
回答2
クリップ0
更新
2023/02/04
Q&A
解決済
アプリ開発におけるデータの保存方法について
回答1
クリップ3
更新
2023/01/29
Q&A
解決済
JavascriptからGASのサーバースクリプトにリクエストするとblocked by CORS policyエラーが出てしまう
回答2
クリップ4
更新
2023/02/04
Q&A
解決済
flutter × firebaseでSign in with Appleを実装できない。
回答1
クリップ0
更新
2023/02/04
Q&A
解決済
メールアドレスの暗号化は必要でしょうか?
回答4
クリップ3
更新
2023/02/01
意見交換
受付中
AWSでLaravelの環境を実現するために、.envの扱い方
回答3
クリップ0
更新
2023/02/01
Q&A
解決済
ローカル環境からGoogleドライブにアップロードする処理を実行した際、認証エラーが発生して動作しない。
回答2
クリップ0
更新
2023/02/03
Q&A
解決済
googleスプレッドシート、ピポットテーブルのフィルターを変更するには?
回答1
クリップ1
更新
2023/01/29
同じタグがついた質問を見る
Security+は、IT業界団体であるCompTIA認定の資格の一つです。ネットワークセキュリティやコンプライアンスと運用セキュリティといったセキュリティ分野における知識・技術の証明になり、セキュリティインシデントに対応するための知識も評価されます。
Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。
Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。
JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。
良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
2019/01/24 08:43