如何保护 Firebase 帐户等免受用户操作的影响?

How to secure Firebase account etc. from user actions?

我正在开发一个业余项目,使用 Firebase 和一些 Node.JS 运行 Google App Engine 作为后端。我是这方面的新手,也是一个月前才听说 Firebase。

我的问题涉及如何保护各种 "things" 免受用户操作的影响,即使 Firebase 在客户端是 运行 作为 JS。

我知道可以使用逻辑规则保护数据库和存储 - 已经到位。

我的问题是关于用户可以使用 firebase.auth() 和类似的操作执行的操作,例如:

正如我从下面链接的问题中了解到的那样,没有解决方案 - 用户将始终能够调用这些函数,并且它被认为是低风险的,因为它们无法触及其他用户帐户。 "prevent firebase user from deleting himself"

我担心无法阻止用户执行这些操作是因为我无法对数据库执行相关更改。对于一些基本用例,我假设设置每晚的批处理作业来清理很容易,但我担心将来会出现更复杂的问题。

我当前用于执行原子操作的解决方案,例如删除用户帐号和删除数据库中的用户数据,是向我的后端Node.JS服务器发送请求。这工作正常,但据我所知,用户可以绕过这个并请求例如currentUser.delete() 由 himself/herself。另一种情况是用户取消链接 google 帐户。我希望用户被注销,但前提是用户可以取消与后续操作的链接。

问题:我是不是误会了什么?这可以很容易地避免,还是所有可用的操作都被认为是无害的并且由我来执行巧妙的清理等?如果无法避免,你有没有比夜间批处理作业更聪明的建议?

使用适用于 firebase 的 Cloud functions,您可以触发用户删除功能。这样,每次删除用户时,您都可以 运行 您的代码来进行清理。无论如何调用用户删除。

exports.removeUserFromDatabase = functions.auth.user().onDelete(function(event) {
    // Get the uid of the deleted user.
    var uid = event.data.uid;

    // Remove the user from your Realtime Database's /users node.
    return admin.database().ref("/users/" + uid).remove();
});

"onCreate"也是如此。查看他们的文档 https://firebase.google.com/docs/auth/extend-with-functions