Firebase速率限制读取安全规则

时间:2017-01-29 06:46:47

标签: firebase firebase-realtime-database firebase-security

我已经对用户进行了身份验证,并且希望能够保护自己免受垃圾邮件对特定引用的读取(从而增加成本)的影响,您是如何做到这一点的?我在这里看到了这个问题:

Firebase rate limiting in security rules?

这涉及限速写入:

  

"诀窍是对用户上次发布的时间进行审核   消息" - 加藤

有没有办法确定用户上次读取的时间,然后将下一次读取限制为上次读取的某个时间间隔?可能更好的是限制在特定时间范围内的读取量(比如每小时n次读取)?

由于

2 个答案:

答案 0 :(得分:2)

我刚看到firebase使用了一个可突发的结算方案,如下所示:

https://en.wikipedia.org/wiki/Burstable_billing

这样您就不会因恶意用户执行我在此处描述的内容或DDOS而被指控。

答案 1 :(得分:0)

这个怎么样:

结构:

users
   uid_0
     name: "biff"
     post_activity
       post_id_0
          last_activity: "20170128100200"

和用户节点

   a post about posting
   a post about pizza

伪代码,因为我们不知道平台

显示表格中的帖子列表

lastActivity = uid_0/post_activity/post_id_0/last_activity

用户点击或点击“关于发帖的帖子” 在代码中,获取最后一项活动,即今天上午10:02

let currentTimestamp = current time (say it's 10:04 am)
if currentTimestamp - lastActivity > 1 minute then
   show post details
   update the lastActivity node to current timestamp
else
   print("Posts can only be reviewed every minute")

然后将最后一个活动与当前时间进行比较,如果它在不到一分钟之前被访问过,请不要让它们再次阅读

{{1}}

在这种情况下,上次在2分钟前阅读帖子时,请允许再次阅读。如果不到一分钟就会被拒绝。

此外,如果用户点击/点击post_id_1,则无法找到帖子活动,这意味着用户之前从未查看过该活动;在这种情况下,将它添加到uid_0 / post_activity节点。

相同的技术可以与计数器一起使用,而不是用来限制用户阅读帖子的次数。