如何配置Firebase DB安全规则禁止用户未授权修改prem字段
解决方案
核心逻辑调整
你当前的实现存在本质安全问题:所有前端侧的写数据库逻辑都可以被用户伪造篡改,必须将prem字段的修改逻辑完全迁移到后端,前端不再持有任何修改该字段的权限。
安全规则配置
直接在规则中禁止所有普通用户修改prem节点即可,Firebase Admin SDK(服务账号)默认会绕过所有安全规则,不会受到该规则限制:
{ "rules": { ".read": true, "server": { "$guildId": { "prem": { // 禁止所有前端请求修改该节点,仅允许后端服务账号操作 ".write": false }, "settings": { // 普通配置可以按需保留现有读写权限,自行调整即可 ".write": true } } } } }
具体实现步骤
- 下线现有前端代码中直接修改
prem字段的逻辑,前端仅保留PayPal支付按钮渲染功能 - 部署后端服务(云函数、自有服务器均可),配置PayPal Webhook监听支付成功事件
- 创建PayPal订单时将对应Discord服务器ID存入订单自定义字段,支付成功后PayPal会将订单信息推送到你的后端Webhook地址
- 后端收到回调后首先验证请求签名确实来自PayPal,避免伪造请求,确认支付有效后,通过Firebase Admin SDK初始化数据库连接,将对应服务器的
prem字段设置为true - 上线上述逻辑后再替换成新的安全规则,即可彻底杜绝用户恶意篡改权限的问题
内容的提问来源于stack exchange,提问作者Conta
相关产品推荐
相关产品推荐

