我突然意识到,由于客户端逻辑如此之多,恶意用户可以通过在任何浏览器中使用控制台来欺骗、覆盖或游戏 firebase 应用程序。
例如,我可以输入 $(".flag").click() 并用三个笔划标记我的应用程序中不存在的每个帖子。
我写的任何防御逻辑都将可供任何想要破解它的人使用。
你是怎么处理的?有解决办法吗?
我突然意识到,由于客户端逻辑如此之多,恶意用户可以通过在任何浏览器中使用控制台来欺骗、覆盖或游戏 firebase 应用程序。
例如,我可以输入 $(".flag").click() 并用三个笔划标记我的应用程序中不存在的每个帖子。
我写的任何防御逻辑都将可供任何想要破解它的人使用。
你是怎么处理的?有解决办法吗?
实际上,Firebase 在安全性方面与任何其他服务器进程没有什么不同。任何人都可以在任何站点上打开 JavaScript 控制台(或编写自己的 HTML 页面,或从命令行运行 curl)来尝试操作数据。
Firebase 使用简单但令人惊讶的强大安全规则来调节客户端。将这些与身份验证模式结合起来,您可以限制对任何传入数据的访问,并以最小的麻烦验证任何传入数据。
{
"rules": {
// widgetName must be a string
"widgetName: { ".validate": "newData.isString()" },
// user accounts can only be read by the authenticated client
"users": {
"$user_id": {
".read": "$user_id === auth.id"
}
}
}
}
Firebase 规则确实是一种新的 Web 构建方法。您可以使用这些规则构建任何类型的 Web 应用程序。我不会在这里放规则代码,但我会解释我的意思。例如。您想构建一个学习应用程序。使用规则,您可以为用户创建两个或三个角色。然后对于每个内容,您可以放置一个字段(例如数组)并检查每个请求是否经过身份验证的请求者用户具有访问某些内容的角色。我认为现在所有的 CMS 都以这种方式工作。
希望这会给 Firebase 平台提供更多的想法。