如何为Realtime Firebase配置安全规则?当前规则被提示不安全
安全的Firebase Realtime Database规则配置方案
你当前的规则给了myapp整个节点公开可读权限,任何人都能读取该节点下的所有数据,这就是谷歌提示不安全的核心原因。结合你的PHP写入逻辑(往/myapp/usersinfo/{timestamp}路径插入数据),可以根据不同需求配置以下安全规则:
场景1:仅服务端可写入,无公开读权限
如果数据库仅需要你的后端PHP服务写入数据,不需要前端或其他公开渠道读取,可配置最严格的规则:
{ "rules": { "myapp": { "usersinfo": { // 仅认证请求可写入(你的PHP用Access Token发起的请求属于认证请求) ".write": "auth != null", // 完全禁止公开读取 ".read": false } } } }
如果后端需要读取数据,可将.read改为"auth != null",确保只有认证过的服务端请求能读取。
场景2:增强版规则(校验写入数据格式)
为避免写入不符合预期的数据,可添加数据结构校验,确保email和fullname存在且为字符串类型:
{ "rules": { "myapp": { "usersinfo": { "$timestamp": { ".write": "auth != null", ".read": "auth != null", // 校验写入的数据结构 ".validate": "newData.hasChildren(['email', 'fullname']) && newData.child('email').isString() && newData.child('fullname').isString()" } } } } }
关键注意事项
- 不要给任何节点设置无限制的
.read: true或.write: true,除非你明确需要公开访问该节点的所有数据。 - 你的PHP代码使用的
Firebase Access Token属于认证请求,因此auth != null的规则会允许它正常完成写入操作。
内容的提问来源于stack exchange,提问作者Nancy Moore
相关产品推荐
相关产品推荐

