2016-08-09 5 views
1

すべてを削除するようにハッキングを防止することができます

私は、私はシンプルなTODOアプリを行うためのチュートリアルに従うとき、私は私が唯一のユーザーが新しいTODOを追加できるようにすることができますか疑問に思う、AngularFireにかなり新しいです削除はできません。基本的には、私のデータを破壊するクライアント側のハッキングを望んでいません。ユーザーがコンソールを開いて手動で$ remove APIを呼び出すと、どうすればそれを防ぐことができますか?あなたのFirebaseデータベース上の不要なCRUD操作を実行することからクライアントを防止するために

おかげ

答えて

3

は、あなたがdatabase rulesを定義する必要があります。

ルールはJSON構造で定義され、現在のauth情報を参照できます。たとえば、あなたが/users/<uid>の下で、データベース内のユーザ情報を格納している場合は、以下のルールは、各ユーザーが自分の情報への読み取り/書き込みアクセスをし、他のユーザの情報へのアクセスを読んで付与します:

{ 
    "rules": { 
    "users": { 
     ".read": "auth != null" 
     "$uid": { 
     ".write": "auth != null && auth.uid == $uid" 
     } 
    } 
    } 
} 

規則は、データを参照することができます既にデータベースに入っているため、特定のキーに既存のデータがない場合にのみ書き込みを許可することができます。つまり、更新を防ぐことができます。

同様に、ルールは格納される新しいデータを参照できるため、新しいデータが指定されていることを確認することができます。つまり、削除を防ぐことができます。

このようなルールは(/todos/<uid>/<todoId>下に保存)ドスを作成することができるようになるが、どちらも更新も削除:

... 
"todos": { 
    "$uid": { 
    ".read": "auth != null && auth.uid == $uid", 
    "$todoId": { 
     ".write": "auth != null && auth.uid == $uid && data.val() == null && newData.val() != null" 
    } 
    } 
} 
... 

JSON構造にルール定義を維持することが困難になることができます。 FirebaseのBoltツールは、より複雑なルールの定義に役立ちます。