如何在Firebase Web应用程序上防止客户端控制台黑客攻击?

6
我意识到,由于客户端逻辑太多,恶意用户可以通过在任何浏览器中使用控制台来欺骗、覆盖或攻击 Firebase 应用程序。
例如,我可以输入 $(".flag").click(),并且只需三个步骤就可以将我的应用程序上的所有帖子都标记为不存在。
我所编写的任何防御逻辑都将对任何想破解它的人可用。
你是如何处理这个问题的?有没有什么解决方法?

你无法阻止人们使用他们的控制台。请使用服务器端。 - Dom
1
限制来自任何给定用户的标志/更新数量到一些绝对限制或每分钟限制。通过 cookie、浏览器 ID、IP 地址或您关心使用的任何用户身份进行检测。 - ChuckCottrill
1
Firebase安全规则可以防止用户更改您不希望他们接触的数据:https://www.firebase.com/docs/security-quickstart.html - Anant
2个回答

6
实际上,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"
           }
       }
   }
}

1
有趣的评论和答案。我最近深入研究了安全规则,看到了你指的方向。验证表达式可以不仅仅是检查身份验证是否匹配等等。它还可以检查时间戳差异或任何其他比较我想出来的东西。例如,同一用户的时间戳小于500毫秒或类似情况。像往常一样,需要很多焦油才能让某些东西变得完全密封。 - Itumac
我想知道以下示例情况是否可能发生:假设我有一个博客,并且在每个页面上为经过身份验证的用户呈现10篇文章。如果一个经过身份验证的用户访问网址http://mydb.firebase.com/posts ..他们会看到我当前的200篇文章吗?他们是否可以访问我不想让他们查看的节点?比如“喜欢”这篇文章的用户?如果是,我该如何防止他们访问该网址? - user2399432

1
Firebase规则是一种全新的Web构建方法。使用这些规则,您可以构建任何类型的Web应用程序。 我不会在此处放置规则代码,但我将解释我的意思。 例如,您想构建一个学习应用程序。使用规则,您可以为用户创建两个或三个角色。然后,对于每个内容,您可以放置一个字段(例如数组),并检查每个请求是否经过身份验证的请求者用户具有访问某些内容的角色。我认为所有CMS现在都是按照这种方式工作的。 希望这将给Firebase平台提供更多想法。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接