添加数据读取限制 firebase firestore

2023-12-07

我们有一个使用 Firestore 的 iOS 应用程序。该应用程序仅读取数据(不写入),我们没有用户帐户,数据库上的任何内容都必须受到保护。因此,我们遵循这些幼稚的安全规则

service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
       allow read;
    }
  }
}

然而,Firebase 警告我们(当然,有充分的理由),这使我们面临风险,原因有二:

  1. 任何用户都可以从数据库中读取任何内容,因此没有什么是安全的。

我不认为这是一个问题,因为我们没有什么必须保密的。至少现在,当然,这可能会改变。

  1. 允许无限读取

这就是问题所在。我想恶意用户可以读取我们的数据库数百万次,从而关闭我们或只是迫使我们支付大笔账单(我们使用 Blaze 计划,按需付费)。

我们怎样才能避免这种情况的发生呢?我在这里看到了类似的问题,但他们没有提供任何有用的建议,如何限制从 Firebase 读取数据的速率?

我的想法是,我们可以在应用程序中使用匿名用户帐户,然后在我们的安全规则中仅允许在用户“登录”时读取(从而任何使用该应用程序的人)。我远不是 Firebase 和安全问题方面的专家,但这是否至少会让某人更难或不可能读取我们的数据库数百万次,因为它必须通过应用程序完成?

我们如何解决这个问题还有其他建议吗?

Firebase warning message for bad security rules


一旦您允许对文档进行读取访问,就没有真正的方法可以限制特定客户端应用程序的读取速率。有了完全公开的阅读规则,互联网上的每个人都可以重复阅读文档来生成账单。不过,发生这种情况的可能性确实很小,您应该向以下人员报告看似虐待的行为:Firebase 支持.

您可以通过调用您希望客户端能够读取的各个顶级集合来消除警告消息。由于 Firebase 不知道您可能想要允许或禁止访问哪些集合,因此您应该明确说明。例如,每个集合都是这样的:

    match /collection1/{document=**} {
       allow read;
    }
    match /collection2/{document=**} {
       allow read;
    }

如果您这样做,请务必删除您现在拥有的允许访问所有文档的规则。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

添加数据读取限制 firebase firestore 的相关文章

随机推荐

  • 使用 Dumper 不会触发故障

    当运行这样的代码时 use strict print Dumper something 编译和运行时没有打印任何内容 也没有发生错误 为什么会出现这种情况 为什么不strict阻止此代码运行 尽管 Dumper 未知 但为什么运行时没有错误
  • 在docker容器内运行maven集成测试

    在运行集成测试之前 我使用 dockerfile maven 插件将我的 jar 文件移动到 docker 容器内 但是 mvn verify 命令构建图像并运行集成测试 结果测试失败 有人可以帮我在运行集成测试之前运行 docker 镜像
  • Python 中的节拍器脚本中的计时问题(使用 Pygame)[重复]

    这个问题在这里已经有答案了 我正在尝试编写一个节拍器脚本 它可以为我提供音频反馈并将 MIDI 消息发送到合成器 我用Python 2 7 5 and Pygame 1 9 1 release在 Linux Mint 16 上 我对 MID
  • Pytest 日志记录忽略 pytest.ini 中的选项

    我正在运行一个测试 pytest capture no verbose rootdir testing testing tests docker test py from home user development 该测试检查某些容器是否正
  • 同步 WrapPanel 中的 WPF 控件宽度

    我有这个案例
  • 这个命名变量是如何工作的?

    我是Python的初学者 我发现了一种奇怪的变量命名方式 并且根本无法理解 有人能帮助我吗 x 1 n 1 1 3 for i in n y x x i 我想理解这一行y x x i这是什么意思 这称为元组拆包 右边只是一个元组 表达式中的
  • 多线程内的 OpenGL VBO

    我正在用 C OpenGL 开发一个程序 它可以绘制整个世界的地形 我有一个以图块形式存储的海拔高度数据库 每次启动程序时 都会加载一个图块 然后 当人移动时 应该加载另一个图块 这不会每帧都发生 可能每 5 分钟一次 我将初始图块加载到显
  • 检查循环(模 16)数是否大于另一个?

    我有两个以 16 为模的循环整数 因此它们的值介于 0 到 15 之间 我需要比较两个数字以确定是否n 1大于n 0 n 1 gt n 0 显然 这没有准确定义 所以我定义n 1大于n 0如果小于前面8个 数字 否则小于n 0 如果不相等
  • 在 F# 中通过声明性映射指定函数组合

    The Clojure Prismatic Plumbing 库可以用来提供应用程序或模块函数图的声明性和显式定义 简而言之 它提供了一种将每个函数指定为带有标签的节点的方法 该标签也是输出标签 带标签的输入和实现 为此 它使用在宏中定义的
  • 如何通过 jQuery 隐藏控件组?

    在我的 Sharepoint 项目 Web 部件 网页中 我在 ascx cs 文件中使用 C 动态创建页面元素 控件 在 ascx 文件中 我使用 jQuery 来响应页面上发生的事件 选择 复选框状态的更改等 我需要有条件地使页面上的控
  • 如何在 Rails 和 Postgresql 中查找带有多个标签的帖子

    我有模型Post Tag and PostTag 一个帖子通过帖子标签有很多标签 我想查找专门标记有多个标签的帖子 has many post tags has many tags through post tags 例如 给定这个数据集
  • HTC 设备上的 imeoptions

    我在 HTC 设备上看不到像 did 和 like 这样的 imeoptions 而相同的代码在 Motorola 上运行良好 这是代码
  • 如何使用 Youtube API v3 将 Youtube 视频静音?

    我在用着Youtube API V3用于在我的中播放视频安卓应用程序 但是 我正在将文本转语音与视频一起使用 所以我想mute视频 以便可以听到其他音频 我搜索了文档和互联网 但只找到了 javascript 的解决方案 任何帮助 将不胜感
  • Javascript 作用域变量理论

    我有两个行为不同的示例页面 我想知道原因 对我来说 根据我收集的关于 javascript 范围界定的信息 它们似乎彼此一致 1 html h1 Bad Scoping h1
  • 使用应用程序池标识会导致异常和事件日志

    我最近将我的应用程序从使用 ASP NET 模拟切换为在应用程序池中实际指定身份 这样做的原因是为了将来使用async更容易 因此线程作为我的服务帐户运行 自从进行更改以来 该网站遇到了一些问题 在我进行更改的那天 我现在看到这些事件日志显
  • 打开终端时导入 conda 错误回溯

    每次我打开终端时都会显示以下代码行 Traceback most recent call last File
  • 通过 JavaScript 禁用按键事件

    I need to disable shift keypress event in my site by using JavaScript or any other method Below is my code document read
  • iPhone:如何在选项卡栏应用程序中的多个视图控制器之间传递数据

    我有以下问题 我构建了一个带有 4 个选项卡的选项卡栏应用程序 我想将对象 变量从第一个选项卡控制器传递到第三个选项卡控制器 并使用相应的对象初始化该控制器 我已经做了一些研究 与干净模型方法相对应的最佳方法是在被调用的视图控制器上调用一些
  • 当我想双击时如何避免点击?

    我有一个 WPF 应用程序和一个按钮 在此按钮中 我想要实现代码的单击事件 但我希望当用鼠标双击时 执行其他代码 但不执行单击事件的代码 问题是点击事件的代码总是被执行 我不知道是否有办法避免双击时执行点击事件 我遵循 MVVM 模式 并使
  • 添加数据读取限制 firebase firestore

    我们有一个使用 Firestore 的 iOS 应用程序 该应用程序仅读取数据 不写入 我们没有用户帐户 数据库上的任何内容都必须受到保护 因此 我们遵循这些幼稚的安全规则 service cloud firestore match dat