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

Firestore Rules使用疑问:桌面应用序列号存储的安全配置方案

Firestore序列号激活场景安全改造最优方案

核心改造思路

完全收口序列号相关的读写逻辑,避免客户端直接操作核心数据库,用服务端做所有校验和数据写入,从规则层面封死未授权访问的可能。

具体落地步骤

1. 第一步先修改Firestore安全规则

直接删除原有公开读写配置,替换为默认拒绝所有客户端访问,仅开放服务账号权限:

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    // 核心序列号集合仅允许服务账号访问
    match /serial_codes/{code} {
      allow read, write: if request.auth.token.email == "your-cloud-functions-service-account@appspot.gserviceaccount.com";
    }
    // 其余路径默认全部拒绝
    match /{document=**} {
      allow read, write: if false;
    }
  }
}

2. 替换客户端直接写库逻辑

把原有桌面端点击激活后直接调用Firestore Rest API写数据的逻辑,改为调用你部署的Cloud Functions HTTPS接口,仅给接口传序列号、当前设备的硬件标识两个参数即可。

3. 服务端接口做全链路校验

接口侧按顺序完成以下校验,全部通过后再操作数据库:

  • 先验签:桌面端内置一个非公开的固定盐值,传参时将「序列号+设备标识+盐」做SHA256哈希,接口侧用同样规则计算哈希比对,不匹配直接拒绝请求,过滤掉无意义的恶意Curl请求
  • 校验序列号有效性:查询Firestore中是否存在该序列号,且状态为未使用
  • 校验通过后由服务端写入激活记录,标记序列号为已使用,绑定对应设备标识,返回激活成功结果给客户端

4. 可选加固方案

  • 给接口加请求频次限制,同一IP1分钟内最多请求3次,避免暴力枚举序列号
  • 所有激活请求全留痕,定期排查批量请求无效序列号的IP,直接封禁

注意:绝对不要在桌面端安装包中硬编码Firestore服务账号密钥、管理员权限凭证,一旦被逆向会导致数据库完全失控。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 22:45:04