問題タブ [firebase-security]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
4290 参照

javascript - 自分のウェブサイト (クライアント側のコード) だけが Firebase バックエンドと通信できるようにするにはどうすればよいですか?

Firebaseについて読んだことがありますが、私がやりたいことは素晴らしいようです。認証と、特定のログインユーザーがさまざまなことを行うことを許可されているルールに基づいている方法について読んだことがあります。よかった。

ただし、別のタイプのセキュリティについてはよくわかりません。自分のサイト (クライアント側の JavaScript を使用)だけが firebase-backend と通信できるようにするにはどうすればよいですか? 私が尋ねているのは、誰かがクライアント側のコード (私の特定の firebase バックエンドを指す URL) から私の firebase エンドポイントを検索して、それを使い始めるのを防ぐ方法がないからです。

これは、匿名ユーザー ロールへの書き込みを許可したい状況では特に気になります。(例: おそらくいくつかの分析)

これについて私の心をクリアにする助けがあれば幸いです。

0 投票する
1 に答える
1478 参照

firebase - ユーザーごとに firebase オブジェクトをクエリする

次のようなデータ構造があります。

「/farms」をクエリすると、認証されたユーザーが所有者であるファームのリストを取得したいと思います。また、ユーザーが所有者ではないファームを表示できないようにしたいと思います。

私のルールは現在次のようになっています。

.read をこのレベルに置くことで、/farms/:farmid 経由でアクセスしたときに、個々のファームへの読み取りアクセスを許可していることがわかります。そして、「.read」を「farms」レベルに移動すると、リスト全体への読み取りアクセスが許可されます。

だから私は自分のデータを再構築する必要があると思いますが、これを行う最善の方法がわかりませんか? 特定のファームにも多数の「編集者」ユーザーを追加したいので、ユーザー オブジェクトの下にファーム オブジェクトを追加したくありません。

ご協力いただきありがとうございます

0 投票する
1 に答える
449 参照

angularjs - 複雑なセキュリティ ルール要件のコンテキストで Firebase のデータを非正規化/構造化する方法は?

私の元のタイトルは「安全なユーザー アクセスのために、Firebase でユーザー (アカウント) データを構造化して保護する方法」でした。これがこの質問の領域であるため、代わりに、より一般的な質問を作成できると考えました。
私はhttps://www.firebase.com/blog/2013-04-12-denormalizing-is-normal.htmlに精通していると言っていました
が、この記事と同じくらい素晴らしいですが、私の問題にはまったく当てはまりません。だからここに行きます。


まず、メール/パスワード認証タイプのシンプル ログインを使用します (ただし、ユーザーのメールの検証にサーバー側のコーディングが必要な場合は、代わりにペルソナを使用する可能性があります)。
ユーザー データ (読み取りユーザー アカウント) が格納された userData オブジェクトがあります。各ユーザーは、自分のアカウントに保存されているデータのみを読み取ることができる必要があります。すべてのユーザーがアクセスする実際のデータは、comingdata という別のノードに保存されます。
ユーザーが今後のデータのどのデータにアクセスできるかは、ユーザーが行った購入の種​​類によって決まります。
「サブスクリプション」タイプのユーザーは、サブスクリプションが期限切れになるまですべてのデータにアクセスできます。「now」変数を使用して、セキュリティ式でこれを実現できると思います。
「購入」タイプのものは、購入した(配列にリストされている)データのみにアクセスできます。
admin@mydomain.com は、すべてのユーザーのすべてのデータを読み取ることができる必要がありますが、今後のデータ ノードに対してのみ書き込み (および読み取り) を行う必要があります。

Firebaseに保存しようとしているテストデータ構造は次のとおりです。

「。」のため、これは機能しません。文字。
次のような DOT マングルを使用する必要があります。

むしろ、userData ノードの作成時に「push()」「空」のユーザー アカウントを作成し、ユーザーのユーザー名を {"id" : "admin@mydomain.com"} プロパティとして保存する必要がありますか?
Firebase でセキュリティ ルールを設定して、購入が成功したとき (PayPal など) の書き込みを除いて、userData の内容を常に読み取り専用にするにはどうすればよいですか?
これは、サーバー コードに頼らなくても安全に実行できますか?
サーバーのみが Firebase にデータを書き込むことができるようにセキュリティ ルールを設定できることはわかっていますが、これにはサーバー側のコードが含まれ、有効な PayPal 支払い通知 (IPN) に応答して適切なデータを書き込むことになります。 -サーバー側のコーディングにあまり熟練していないため(node.jsを成功させることができるはずですが)、回避したい側のコードだけでなく、LAMPスタック共有サーバーは必要なVPSよりもはるかに安価であるためです。ノード用 (ああ、私は php を実行できません :( )。
クライアント コードは、素晴らしい Angular.js / angularFire コンボを使用して開発されます。Jared さん 、
お時間を割いていただきありがとうございます。

0 投票する
1 に答える
114 参照

security - AngularFire (JavaScript/noBackend) アプリを監視するためのシステム ロギング?

こんにちは、私はAngularFireアプリを構築しています.

  • ログインに失敗しました
  • 書き込み/読み取りの失敗
  • HTTP リクエスト/レスポンス

このコードを JavaScript で記述できますか? 悪意のあるユーザーがコードを変更して、特定のログ メッセージを表示できなくなるのではないでしょうか?

この種の機能が安全であることを確認するために、人々はどのようなソリューションを行ってきましたか?

アプリで何らかのアクティビティを行う場合、ログ メッセージを添付する必要があるというセキュリティ ルールを作成することは可能ですか?

防弾というものは何もないことはわかっていますが、人々が思いついた安全なソリューションを聞いてみたいと思います. ありがとう!!!!!

0 投票する
1 に答える
41 参照

firebase - ユーザーの書き込み権限を許可せずにユーザーの情報を更新する

ユーザーがアプリの有料ユーザーになることを許可するルールを Firebase でどのように設定できますか? たとえば、次のデータ構造があるとします。

ユーザーが自分で更新することを許可しないように (リクエストをごまかして)、firebase ルールを設定するにはどうすればよいでしょうか。

数字をランダムに生成して、ユーザーにその数字の入力などを求めることを考えましたが、うまくいかないと思います... 誰かがこのようなことをしましたか?

0 投票する
2 に答える
2559 参照

firebase - サーバー側のコードを使用せずに、ユーザー認証なしで安全な方法で firebase と統合できますか?

私のサイトは、フォームのある 1 ページだけです。ユーザー認証機能がありません。サーバー側のコードを安全な方法で通過させずに、クライアント側の Firebase 統合を引き続き使用できますか? はいの場合、firebase 接続の詳細を保護するにはどうすればよいですか?

0 投票する
1 に答える
1135 参照

firebase - Firebaseでエスケープされた電子メールベースのユーザーアカウントを認証する方法は?

Firebase Simple Login のメール/パスワード認証オプションを使用しています。
エスケープされた電子メールをキーとしてユーザーのデータを保存します。ユーザー ID をキーとして使用するのではなく、文字を「,」に置き換えました (Firebase では「.」をキーに格納できないため)。問題は、セキュリティ ルールで正規表現を使用して、エスケープされた電子メールを auth.email 変数に対して認証できないことです。したがって、次のことはできません。

各 $user は 'some,one@domain,co,uk' のように見えるため、auth.email は 'some.one@domain.co.uk' です。
この問題を回避する方法はありますか? ユーザーごとの認証を可能にするために、各 $user 内にユーザー ID を保存する必要がありますか? この場合、エスケープされた電子メールではなく、ID ベースのノードにユーザー データを格納する方が簡単だと思います。