firebase - 可以在客户端实现firestore读取而不用担心吗?
问题描述
我正在使用 Firebase 在 React Native 中开发一个应用程序,其中对 firestore 的每一次写入都在后端处理,但读取不是。我在客户端实现读取,我担心用户会修改我的代码并开始读取数百万个文档,从而产生大笔费用。
是否也应该在后端实现 Firestore 读取?
Pd:现在,我的安全规则只允许读取登录用户。
我真的很感激任何反馈。
谢谢你。
解决方案
可以在客户端读取甚至写入 Firestore,但您的应用程序应该为此做好准备。
保护 Firestore 应用程序的最佳方法是使用Firebase 身份验证和安全规则。
我建议你看一下这个文档,虽然它看起来有点广泛,但可以在下一段中恢复:
使用您的安全规则确保您只检索用户应该有权访问的文档。
它可能看起来有点微不足道,但它是如何避免恶意用户意外读取的基础。例如,您可以使用安全规则将读取限制为仅“作者”字段与身份验证 ID 匹配的经过身份验证的用户:
service cloud.firestore {
match /databases/{database}/documents {
match /stories/{storyid} {
// Only the authenticated user who authored the document can read or write
allow read: if request.auth != null && request.auth.uid == resource.data.author;
}
}
}
这样,即使他在客户端更改了您的代码,用户也无法检索数千个文档,因为他只能访问有限数量的资源。
本文还有许多其他有用的示例,它们将帮助您了解如何保护您的数据。
此处提到的每个规则集评估的文档访问调用也有限制:
超过任一限制都会导致权限被拒绝错误。
因此,您可以确定,即使恶意用户想要多次调用同一个文档,它也会在达到所述限制后被 Firestore 阻止,或者将结束使用缓存而不是直接调用您的数据库。
我想提到的另一件事是,它可能会收到警报或限制您的帐单预算,因此您不必担心意外费用,这个答案更好地解释了它:
(在 Google Cloud Platform 控制台上)您可以为您的 Firebase 项目设置计费提醒,以便在使用量达到一定水平时收到提醒。虽然您无法将其配置为在某些时候关闭项目,但警报通常应该非常适合提醒您异常使用模式
GCP 文档现在还有一个关于限制(禁用)计费以停止使用的部分。
推荐阅读
- amazon-web-services - 需要注册 20000 个预定的 lambda
- react-native - 如何将 Y 轴放在 Victory Native 的条形图顶部?
- jenkins - 在 Windows Server 2019 中找不到 Jenkins 安装路径
- mermaid - 如何生成包含每个节点的标题和描述的美人鱼流程图
- javascript - 如何禁用右键单击嵌入标签?
- azure - 云初始化上的 Azure 文件共享装载脚本
- python - Python 从列表中获取所有可能的组合
- php - jspdf autoTable 不是脚本标签中带有 CDN 链接的函数
- javascript - 从与标签 React native 匹配的数组中获取电话号码
- jquery - 在 WordPress 中,我使用插件进行预约预订(amelia),为什么 javascript 不从 jQuery 获取带有 .find() 函数的选择器,