2017-03-12 8 views
0

私は、ユーザが私に支払う残高システム上で動作するサイトを構築しており、サイト上の残高は更新されます。彼らはこの残高を使用して、サイト上のアイテムを購入することができます。私は、このフォームで自分のバランスを保存するためにfirebaseを使用しています。これらのルールに機密データのFirebaseによる安全な更新

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

{ 
    "rules": { 
    "users": { 
     "$uid": { 
     ".read": "$uid === auth.uid", 
     ".write": "$uid === auth.uid" 
     } 
    } 
    } 
} 

ユーザーがサイト上で何かを購入するとき、私は、システムが自動的に差し引くことができるようにしたいです私の現在のルールでは、ファイアベースの知識を持つ悪意のあるユーザーが、バランスを編集するために自分のアプリを書くことができます。

私のアプリは、彼らが堆積または安全であると誰でも行うことが傾ける方法で何かを買うときに、自動的に自分のバランスを更新することができるようにするための方法はありますか?

注:私はfirebaseを初めて使用しています。

答えて

1

あなたは安全な環境で、いくつかのバックエンドのコードを書くことCloud Functions for Firebaseに見たいと思うかもしれません。ユーザーがそのアクセス権を持つデータベースの場所で書き込みをトリガーするクラウド機能を作成できます。その後、関数がトリガされると、ユーザーが読み取れる以外のデータベース位置への書き込みアクセス権を持つ "admin"参照にアクセスできます。ユーザーが取る行動は唯一あなたがコントロールロジックを使用して、どこかのデータベースに変更を加えることができるようにこのように

、あなたは効果的に「コマンドキュー」のようなものを実装することができます。

+0

私は正しくフォローしていないかもしれませんが、私は同じ問題を抱えていませんか?悪意のあるユーザーがそのトリガーの場所に書き込むことはできませんでした。これが私のクラウド機能を引き起こします。 – AllAnimals

+0

そのトリガが有効かどうかは、関数内のコードを制御するだけなので、検証できます。このようにアクションの妥当性を決定するすべてのロジックを分離する必要があります。 –

+0

有効なトリガーであるかどうかを確認するのにどのような方法がよく使用されますか?どのように私がそれを検証することができないのか分かりません。 – AllAnimals

関連する問題