firebase 3を使用しています。 firebaseルールを書き込むとき、authオブジェクトにはuidとプロバイダのみが含まれます。これが電子メールアドレスを提供するように強化される可能性はありますか?firebaseルールの電子メールアドレスにアクセスする
私が解決しようとしている問題は、私が取り組んでいるサイトの所有者が自分の電子メールアドレスに基づいてユーザーの許可を得たいということです。
私は、ユーザオブジェクトをfirebase(電子メール)に保存し、それをルールの参照ポイントとして使用することを提案しました。 私が見ることができる問題は、誰かが完全な権限を持つユーザーの電子メールアドレスを知っていれば、コードをデバッグしてファイヤーベースに保存する前に電子メールアドレスを操作するのはかなり簡単なことです。他の人のメールアドレスと一緒にfirebase id。
これを安全にするために私が見ることができる唯一の方法は、firehassルールのauthオブジェクトに電子メールアドレスを提供することです。これはハッキングできません。
何か不足していますか?
MORE INFO
アイデアは、我々は、ユーザーの電子メールアドレスに場所名を追加することにより、特定の場所のためのデータへのアクセスを制御することができるということです。
- ユーザーでありますサイト管理者が手動で事前に作成し、データのサブセットへのアクセスを提供します。 例えば
-users
-user1Email
-locations
-someLocation:true
-someOtherLocation:true
-
ユーザーがGoogleを介して認証します。クライアント側では、我々はルールではauth.user.email
で自分のメールアドレスを見ることができ、私は電子メールアドレスをエスケープする必要があります知っている
locations : {
"$location": {
".read": "root.hasChild('users/' + auth.email + '/locations/' + $location)",
}
}
のような何かをしたいです今のところそれを簡単に保つようにしています。
これはシミュレータでテストしましたが、カスタムプロバイダを使用して電子メールを送信すると完全に機能しますが、googleを使用してルールの「認証」にはuidとプロバイダのプロパティのみがあり、電子メールはありません。
代わりに(カスタムプロバイダーを使用する以外)、ユーザーが自分のアカウントを作成できるようにしてから、そのユーザーの電子メールアドレスではなくuidをキーとして場所を追加します彼らがすぐに言葉でそれを最初にログインするように、それを前もって設定できるようにする。
あなたが扱おうとしている正確なユースケースを説明できますか? 「彼は自分の火災の原因を知らないだろう」とはどういう意味ですか?あなたが期待していることをしようとすると、ユーザーは認証されますか? – adolfosrs
申し訳ありませんが、コードをきれいにフォーマットするのに手間がかかっていましたが、今は読みやすいはずです。 – John
電子メールアドレスはセキュリティルールの 'auth'変数で利用できるようになりました。 http://stackoverflow.com/questions/37986097/how-can-we-guarantee-that-the-email-saved-by-the-firebase-user-is-indeed-his-own –