如何配置Firebase规则使无需注册的React Native门店下单应用可安全提交数据
符合你当前需求的Firestore规则配置
service cloud.firestore { match /databases/{database}/documents { // 商品集合规则:如果实际集合名是products请替换掉productos match /productos/{productId} { // 所有用户可读取在售商品 allow read: if true; // 禁止普通用户修改商品数据,后续接入后台账号后可补充后台权限校验 allow write: if false; } // 订单集合规则:如果实际集合名是orders请替换掉ordenes match /ordenes/{orderId} { // 允许未登录用户创建新订单 allow create: if true; // 适配你当前用订单ID查询进度的逻辑,仅允许查询单个订单 allow get: if true; // 禁止普通用户修改、删除已有订单,避免数据被恶意篡改 allow update, delete: if false; // 禁止批量拉取订单列表,避免全量订单数据泄露 allow list: if false; } // 全局默认拦截所有未匹配的请求,避免权限漏配 match /{document=**} { allow read, write: if false; } } }
规则说明
- 修正了你之前规则里路径多空格的语法错误,原规则
match / databases / {database} / documents中间的空格会导致规则不生效 - 废弃了全局通配的开放权限,按集合拆分权限控制,从根源降低安全风险
- 商品集合仅开放读权限,避免普通用户篡改商品价格、库存等核心数据
- 订单集合仅开放最低必要权限:未登录用户只能创建新订单、用已知的订单ID查询单条订单进度,无法修改删除订单、也无法批量爬取所有订单数据
- 最后加了全局默认拒绝规则,所有未明确配置权限的路径都会被拦截,不会出现漏配风险
后续认证功能上线后优化方案
等你完成用户认证功能开发后,可以进一步收紧权限:
- 下单时将用户的uid写入订单的
author_uid字段 - 将订单的
get权限调整为allow get: if request.auth.uid == request.resource.data.author_uid,确保只有订单创建人才能查看订单进度 - 补充后台管理账号的权限校验,开放后台对商品、订单的修改权限
内容的提问来源于stack exchange,提问作者Estudiante
相关产品推荐
相关产品推荐

