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

无需Auth能否安全使用Firebase Firestore?表单数据存储规则咨询

无需用户登录的Firebase Firestore表单数据写入规则配置方案

这种场景并不小众,很多匿名表单工具都采用类似配置,核心是允许未登录用户仅创建新文档,同时严格限制其他操作以保证数据安全。以下是两种不同层级的规则配置方案:

基础安全规则

适用于只需要简单提交表单、无需额外数据校验的场景:

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    // 替换成你的表单数据集合名称,比如form_submissions
    match /form_submissions/{document} {
      // 允许未登录用户创建新文档(表单提交)
      allow create: if request.auth == null;
      
      // 禁止任何用户修改或删除已提交的表单数据
      allow update, delete: if false;
      
      // 禁止前端读取表单数据(若无需前端展示提交结果,保持此配置避免数据泄露)
      allow read: if false;
    }
  }
}

规则说明

  • allow create: if request.auth == null;:直接放行未登录用户的文档创建请求,这是表单提交的核心逻辑。
  • allow update, delete: if false;:彻底阻断篡改、删除已有数据的操作,确保提交的数据不可修改。
  • allow read: if false;:如果你的应用不需要在前端展示已提交的表单内容,完全禁止读取权限,避免敏感数据泄露。

进阶安全规则(带数据校验+防刷)

如果需要保证提交数据的有效性、防止恶意垃圾提交,可以添加字段验证和频率限制:

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /form_submissions/{document} {
      allow create: if request.auth == null
        // 验证必填字段存在且格式合法
        && request.resource.data.keys().hasAll(['name', 'email', 'content'])
        && request.resource.data.name is string && request.resource.data.name.size() > 1
        && request.resource.data.email is string && request.resource.data.email.matches('^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$')
        && request.resource.data.content is string && request.resource.data.content.size() > 10
        // 限制1分钟内只能提交一次(需前端提交时传入createdAt字段,值为当前时间戳)
        && request.time > request.resource.data.createdAt + duration.value(60, 's');
      
      allow update, delete: if false;
      allow read: if false;
    }
  }
}

规则说明

  • 字段校验:确保提交的name、email、content字段存在且符合格式要求,过滤空数据或无效内容。
  • 频率限制:通过对比请求时间和提交的createdAt字段,限制用户1分钟内只能提交一次,需要前端在提交时传入createdAt: firebase.firestore.Timestamp.now()。

额外注意事项

  1. 集合名称替换:将规则中的form_submissions替换为你实际使用的Firestore集合名称。
  2. 后台数据读取:如果需要在后台查看表单数据,直接使用Firebase Admin SDK即可,Admin SDK不受安全规则限制,可自由读取所有数据。
  3. 监控异常:可以在Firebase控制台开启安全规则日志,监控异常写入请求,及时调整规则应对恶意攻击。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 09:23:08