在DDoS攻击下限制Next.js博客中的Firebase读取请求[已关闭]

8aqjt8rx  于 2023-04-20  发布在  其他
关注(0)|答案(2)|浏览(116)

已关闭,此问题需要更focused,目前不接受回答。
**要改进此问题吗?**更新问题,使其仅关注editing this post的一个问题。

2小时前关闭
Improve this question
背景:我正在使用Next.js和Firebase开发一个博客网站。用户可以在每个帖子上发表评论。我希望在每个帖子页面上为经过身份验证的用户和访客显示有限数量的最近评论。在我的情况下,客户端渲染(CSR)是最合适的方法,而不是增量静态再生(ISR)或静态站点生成(SSG)。
我已经考虑了一些选项来实现:

  1. Google reCAPTCHA:这种方法似乎对用户不友好,因为用户在访问网站之前需要通过测试。
  2. Firebase安全规则:我可以使用Firebase安全规则来确保只有经过身份验证的用户才能创建、更新或删除评论。但是,我不能限制未经过身份验证的用户(如访客)的读取权限,他们仍然可以读取博客文章的一些评论。
  3. Firebase监控和警报:这个选项似乎没有用,因为当我收到警报电子邮件时,费用将超过我的预算。
    如果费用超出预算,我可以直接停止我的firebase服务器吗?
vuktfyat

vuktfyat1#

为了让用户查看有限数量的最近评论,您可以使用以下firestore查询来查询最新评论。

import {
  query,
  orderBy,
  limit
} from "firebase/firestore";

const q = query(commentsRef, orderBy("timestamp", "desc"), limit(3));

对于已验证的用户评论帖子:你可以通过firestore跟踪他们的评论数量,你可以在评论中使用认证用户的auth id作为一个字段,这将帮助你相应地查询用户的评论。
对于未验证的用户评论帖子:我建议你使用一些带有持久存储的状态管理库。为了跟踪他们所做的评论的数量。我使用zustand来进行客户端持久存储和状态管理。

jjhzyzn0

jjhzyzn02#

您可以使用app check来保护您的firebase数据库不被未经授权的客户端滥用。
应用程序检查将阻止所有不是来自您的应用程序的请求。您可以将其与recaptcha v3一起使用,它不需要用户端的任何操作,因此它是用户友好的。
另外,请查看Doug的answer,它解释了更多关于Firebase中的速率限制。

相关问题