2017-03-12 170 views
0

的火力地堡安全更新我建立一個平衡的系統,其中用戶將支付我和他們的平衡在網站上進行更新工作的網站。他們可以使用此餘額購買網站上的物品。我使用的火力點來存儲他們的這種形式的平衡:敏感數據

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

這些規則:

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

當用戶購買網站上的東西,我希望系統能夠自動減去來自他們在Firebase中的平衡的價值,但根據我目前的規則,具有Firebase知識的惡意用戶將能夠編寫他們自己的應用程序來編輯他們的餘額。

有沒有辦法爲我的應用程序能夠當他們存款或買東西的方式是安全的,不能由任何人來完成自動更新他們的平衡?

注:我是新來的火力點。

回答

1

你可能要考慮Cloud Functions for Firebase寫一些後端代碼在一個安全的環境。您可以編寫一個雲端函數,在用戶擁有該訪問權限的數據庫位置進行寫操作時觸發。然後,當你的函數觸發時,它可以訪問一個「管理員」引用,該引用具有對用戶只能讀取的其他數據庫位置的寫入權限。

通過這種方式,可以有效地實現一種「命令隊列」,使您的用戶需要可以自行更改數據庫中的任何地方的行動,用只有自己控制邏輯。

+0

也許我沒有正確之後,但不會我有同樣的問題?惡意用戶無法寫入觸發器位置,從而觸發我的雲端功能? – AllAnimals

+0

您可以驗證該觸發器是否有效,因爲只有您控制該函數中的代碼。你必須隔離所有決定行動有效性的邏輯。 –

+0

常用什麼方法驗證它是否是有效的觸發器?我不確定如何驗證它。 – AllAnimals