2016-08-09 4 views
1

모두 제거 $처럼 해킹을 방지 할 수 있습니다가 어떻게 AngularFire

나는 간단한 할 일 응용 프로그램을 수행하는 튜토리얼 수행 할 때 AngularFire 꽤 새가, 내가 유일한 사용자가 새로운 할 일을 추가 할 수있는 방법을 궁금해 오전, 삭제는 허용되지 않습니다. 기본적으로 클라이언트 측 해킹으로 인해 내 데이터가 파괴되는 것을 원하지 않습니다. 사용자가 콘솔을 열고 수동으로 $ remove API를 호출하는 것처럼 어떻게 방지 할 수 있습니까? 당신의 중포 기지 데이터베이스에서 원치 않는 CRUD 작업을 수행하는 클라이언트를 방지하기 위해

감사

답변

3

, 당신은 database rules를 정의 할 필요가있다.

규칙은 JSON 구조로 정의되며 현재 auth 정보를 참조 할 수 있습니다.

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

규칙은 또한 데이터를 참조 할 수 있습니다 : 당신이 /users/<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 도구는보다 복잡한 규칙을 정의 할 때 유용합니다.