1

AngularFire のドキュメントが薄く、それと Firebase のデフォルトの Web ドキュメントとの違いにより、ユーザーの作成、読み取り、更新、および削除操作を保護する最善の方法について少し迷っています。

簡単に言うと、店舗を管理するアプリケーションがあるとします。ユーザーは、ストアのオーナーまたはパトロンになることができます。所有者は自分のビューで自分のストアを読み取って編集する必要があり、パトロンは自分のビューですべてのストアを読み取り、編集する必要はありません。

次のような Firebase ドキュメントで提案されているメソッドのセキュリティが心配です

たとえば、次のようなルールを作成して、ユーザー ID をコメントと共に保存する限り、ユーザーがコメントを作成できるようにすることができます。

{
  "rules": {
    ".read": true,
    "$comment": {
      ".write": "!data.exists() && newData.child('user_id').val() == auth.id"
    }
  }
}

私にとって、これは、コメントを投稿したいときに、被害者のユーザー ID を渡すだけで、アプリケーションのデータをハッキングできることを意味します。私が間違っている?

セキュリティに関するドキュメントを何度も読みました。ここはもっと説明が必要だと思います。クライアントに公開されたパラメーターによる識別は、これまでに見つけた唯一の方法です。

4

1 に答える 1

4

ここに示す例でauthは、認証されたユーザーのトークン データを参照します。これは auth() イベント中に Firebase によって設定される特別な変数であるため、クライアントでハッキングできるものではありません。つまり、user_id の値を自分のアカウント ID に設定した場合にのみ、コメントを書き込むことができます。

オブジェクトの内容はauth、クライアントの認証方法によって異なります。たとえば、SimpleLogin のパスワードプロバイダーは、次を認証トークンに入れます: provideremail、およびid; いずれもセキュリティ ルールで利用できます。

サーバーから独自のトークンに署名することも可能です。もちろん、ここでは限界があります。

しかし、要するに、トークンの内部値は、クライアントではなく信頼できるプロセスによって提供されるため、ユーザーが変更することはできません。

于 2013-10-18T16:09:42.043 に答える