无用户登录的React Native应用如何保障Firebase Realtime Database安全
无用户登录体系下的Firebase实时数据库安全调整方案
- 优先使用Firebase匿名登录做权限校验
该方案完全不会影响现有无需用户名密码进入应用的逻辑,认证过程全静默无感知。首先在Firebase控制台开启匿名登录功能,在应用启动时自动调用匿名登录接口完成认证,再请求数据库数据即可。
调整后的规则如下:{ "rules": { ".read": "auth != null", ".write": false } } - 缩小权限开放范围,避免全库可读
不要开放根目录的读权限,仅开放存储词汇的对应节点权限,假设你存储词汇的节点名为vocabulary,规则调整如下:{ "rules": { "vocabulary": { ".read": "auth != null" }, ".write": false } } - 叠加App Check验证拦截非法请求
开启Firebase App Check功能,可验证请求是否来自你自己的应用,拦截爬虫、第三方恶意调用,规则可进一步调整为:{ "rules": { "vocabulary": { ".read": "auth != null && request.appCheck.valid == true" }, ".write": false } } - 可选:增加查询限制防数据爬取
如果不想接入任何认证逻辑,可通过规则限制单次查询的返回条数,避免全库数据被一次性爬走。比如你单次仅加载1条词汇,可设置最高返回10条的限制:{ "rules": { "vocabulary": { ".read": "query.limitToFirst <= 10" }, ".write": false } }
内容的提问来源于stack exchange,提问作者SoF
相关产品推荐
相关产品推荐

