2017-03-12 2 views
0

사용자가 저에게 돈을 지불하고 사이트의 잔액이 업데이트되는 잔액 시스템에서 작동하는 사이트를 구축 중입니다. 그들은이 잔액을 사용하여 사이트의 항목을 구입할 수 있습니다. 시스템이 자동으로 빼기 할 수민감한 데이터의 Firebase 보안 업데이트

사용자가 사이트에 뭔가를 구입
{ 
    "rules": { 
    "users": { 
     "$uid": { 
     ".read": "$uid === auth.uid", 
     ".write": "$uid === auth.uid" 
     } 
    } 
    } 
} 

가, 내가 원하는 :이 규칙으로

root 
----users 
--------<uid> 
------------balance: 10... 

:이 형태로 자신의 균형을 저장하는 중포 기지를 사용하고 있습니다 가치가 있지만, 현재의 규칙에 따르면 firebase에 대한 지식을 가진 악의적 인 사용자는 자신의 앱을 작성하여 균형을 편집 할 수 있습니다.

내 앱이 안전하거나 다른 사람이 할 수없는 방식으로 상품을 입금하거나 구매할 때 자동으로 잔액을 업데이트 할 수있는 방법이 있습니까?

참고 : firebase를 처음 사용합니다.

답변

1

보안 환경에 백엔드 코드를 작성하려면 Cloud Functions for Firebase을 조사하고 싶을 수 있습니다. 사용자가 해당 액세스 권한이있는 데이터베이스 위치에서 쓰기를 트리거하는 Cloud 기능을 작성할 수 있습니다. 그런 다음 함수가 트리거되면 사용자가 읽을 수만있는 다른 데이터베이스 위치에 대한 쓰기 권한이있는 "admin"참조에 대한 액세스 권한을 갖습니다.

이러한 방식으로 "명령 대기열"을 효율적으로 구현하여 사용자가 취하는 조치가 사용자가 제어하는 ​​논리 만 사용하여 데이터베이스의 아무 곳에서나 변경할 수 있습니다.

+0

어쩌면 나는 정확하게 따르지 않고 있지만 같은 문제가 있지 않을까요? 악의적 인 사용자가 내 방아쇠 위치에 글을 쓰면 클라우드 기능이 실행되지 않습니까? – AllAnimals

+0

함수에서 코드를 제어하기 때문에 트리거가 유효한지 여부를 확인할 수 있습니다. 이런 식으로 행동의 유효성을 결정하는 모든 논리를 격리해야합니다. –

+0

그것이 유효한 트리거인지 확인하는 데 일반적으로 어떤 방법이 사용됩니까? 나는 그것을 어떻게 확인할 수 있는지 확신 할 수 없다. – AllAnimals