You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无需身份认证的Firebase实时数据库读写安全方案咨询(游戏场景)

无登录场景下Firebase实时数据库安全配置方案(适配免费套餐)

针对无需用户登录、要开放排行榜读写但怕恶意消耗免费额度的需求,以下是分层的安全配置方案,兼顾易用性和防护性:

一、核心安全规则配置

直接在Firebase控制台的实时数据库规则中设置以下规则,从数据结构、操作频次、访问范围三个维度限制:

{
  "rules": {
    "leaderboard": {
      // 允许所有人读取排行榜,但限制单次读取最多100条数据,防止批量爬取
      ".read": "true",
      ".validate": "newData.hasChildren(['username', 'score'])",
      "$entryId": {
        // 限制用户名长度在2-20字符之间,防止垃圾内容
        "username": {
          ".validate": "newData.isString() && newData.val().length >= 2 && newData.val().length <= 20"
        },
        // 限制分数为正整数,且不超过游戏设定的合理最大值(比如10000)
        "score": {
          ".validate": "newData.isNumber() && newData.val() > 0 && newData.val() <= 10000"
        },
        // 限制每个IP地址每分钟最多提交1次分数更新,仅允许提交更高分数
        ".write": "true && 
          (!data.exists() || 
          (newData.child('score').val() > data.child('score').val() && 
           now - (data.child('lastUpdated').val() || 0) > 60000))",
        // 自动添加更新时间戳,用于频次校验
        "lastUpdated": {
          ".validate": "newData.val() === now"
        }
      }
    }
  }
}

规则说明:

  • 读限制:开放读取但限制单次返回条数,避免恶意爬虫一次性拉取全量数据消耗带宽。
  • 数据校验:强制每条记录必须包含username和score字段,且符合长度、数值范围要求,拦截垃圾数据。
  • 写频次控制:通过时间戳限制同一IP每分钟仅能提交一次分数更新,且仅允许更新更高分数,避免重复刷写占用额度。

二、额外防护措施

  • 启用Firebase App Check:为游戏客户端配置reCAPTCHA v3或App Attest,验证请求来自官方客户端,拦截恶意脚本的直接调用。
  • 设置配额告警:在Firebase控制台「使用情况」页面,为带宽、存储、操作次数设置阈值告警,接近免费额度时及时收到通知。
  • Cloud Functions二次校验(可选):编写监听写入事件的云函数,校验分数是否符合游戏逻辑(比如关卡分数上限),不符合则删除违规记录。
  • 定期清理旧数据:配置定时云函数,每周清理超过30天的旧排行榜记录,减少存储占用和被爬取的数据量。

内容的提问来源于stack exchange,提问作者Tane

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 19:45:48