Firebase 安全规则为 Cloud Firestore、Realtime Database 和 Cloud Storage 中的数据提供强大的、完全可自定义的保护。您可以按照本指南中的步骤轻松开始使用规则,确保数据安全,并保护您的应用免受恶意用户攻击。
了解 Firebase 安全规则语言
在您开始编写规则之前,值得花一些时间查看您正在使用的 Firebase 产品的特定 Firebase 安全规则语言。
Realtime Database 在其规则中使用类似 JavaScript 的语法和 JSON 结构。而 Cloud Firestore 和 Cloud Storage 则利用通用表达式语言 (CEL) 的超集,该语言依赖于 match
和 allow
语句设置访问所指定路径的条件。
详细了解 Firebase 安全规则语言。
设置身份验证
如果您尚未执行此操作,请使用 Firebase Authentication 识别您的用户。 Firebase Authentication 支持许多常见的身份验证方法,并且与 Firebase 安全规则集成,从而提供全面的验证功能。
您可以为您的应用设置其他自定义身份验证信息。
详细了解 Firebase 安全规则和 Firebase Authentication。
定义您的数据和规则结构
您构建数据的方式可能会影响您构建和实现规则的方式。在您定义数据结构时,请考虑它们对规则结构可能产生的影响。
例如,在 Cloud Firestore 中,您可能希望包含一个表示每个用户的特定角色的字段。然后,您的规则可以读取该字段并使用它来授予基于角色的访问权限。
在定义数据和规则架构时,请记住,如果任何规则授予对数据集的访问权限,Firebase 安全规则将授予对该数据集的访问权限。换句话说,如果您已经在数据结构的更高层次授予了访问权限,则无法在子路径中对访问权限进行细化。
访问您的规则
要查看现有规则,请使用 Firebase CLI 或 Firebase 控制台。确保始终使用同一方法修改您的规则,以避免错误地覆盖更新。如果您不能确定本地定义的规则是否反映了最新的更新,Firebase 控制台中会始终显示最近部署的 Firebase 安全规则版本。
如需从 Firebase 控制台访问您的规则,请选择您的项目,然后导航到 Realtime Database、Cloud Firestore 或 Storage。您进入正确的数据库或存储分区之后,请点击规则。
要从 Firebase CLI 访问您的规则,请转到 firebase.json 文件中记录的规则文件。
编写基本规则
在您开发应用和了解规则时,请尝试实现几项基本的安全规则,包括以下用例:
- 仅限内容所有者:限制用户对内容的访问。
- 混合访问:限制用户的写入权限,但允许公共读取。
- 基于属性的访问:限制对一组用户或一种类型的用户的访问。
测试您的规则
要完全验证您的应用的行为,并验证 Firebase 安全规则
配置,请使用 Firebase 模拟器在本地环境中运行单元测试并使之自动运行。
如果您在 Firebase 控制台中设置 Firebase 安全规则,则可以使用 Firebase 规则模拟器快速验证行为。但是,在您将更改部署到生产环境之前,我们建议您使用 Firebase 模拟器进行更全面的测试。
部署规则
使用 Firebase 控制台或 Firebase CLI 将您的规则部署到生产环境中。按照管理和部署 Firebase 安全规则中介绍的步骤进行操作。