Firebase 规则以及如何测试它们
Firebase rules and how to test them
我正在努力构建 Firebase 后端。一开始它非常简单,但随着规则的发展,发现安全漏洞变得越来越困难。实际测试规则的选项有哪些?我查看了 Targaryen,它是一个第 3 方库,但无法启动并在 OSX 上 运行。是否有更通用的方法来测试规则?进行 Firebase 安全测试的最常用方法是什么?
如果您还没有看到它,在您应用的 Firebase 控制面板中,左侧有许多选项;数据、安全和规则、模拟器;模拟器就是你想要的。
在那里,您可以验证为用户,然后在不同的子节点上测试读写能力。
我们制作了自己的小应用程序以 read/write 到不同的节点:随着我们的应用程序的增长,规则的复杂性也随之增加,这使得通过应用程序测试 20 个节点然后测试一个节点变得更加容易一次在模拟器中。我们的测试应用程序大约有 100 行代码。
我刚刚设置了 Bolt,它看起来比通过 Firebase 使用标准规则和模拟器要好得多 UI。
您确实需要实际使用 Bolt 语法,但我发现它无论如何都比标准规则容易得多,尤其是当它们变得越来越大和复杂时,因为 Bolt 允许您为 re-use 通用代码创建函数对于 read/write/validate 逻辑。测试对我来说只是一个奖励。
- 博尔特简介:
https://www.firebase.com/blog/2015-11-12-security-rules-bolt-user-data.html
- 测试说明:https://github.com/firebase/bolt/issues/80
注意几点:
- 说明说要全局安装
firebase-bolt
但节点可以找到它,除非它是本地安装的,或者你 link 全局安装。
- 参见 this answer 获取摩卡咖啡 运行ning。如果您在
package.json
文件的 scripts
部分将 --ui tdd
添加到 "test": "mocha --ui tdd"
并将测试保留在 test/test.js
中,那么您只需要 运行 npm test
到运行你所有的测试。
- 要制定规则,您可以使用 Targaryen。
- 要针对实时数据库测试您的规则,您可以使用 REST api 使用调试标志设置为 true 的令牌(用于创建这些令牌的数据库机密已被弃用,但我不认为您使用新的 Firebase Admin SDK 创建此类令牌);响应 header 将包含有关规则评估的调试信息。
- 要调试您的规则和生产数据,请使用 firebase 控制台中的模拟器(请注意,它不允许模拟更新操作 AFAIK)
我正在努力构建 Firebase 后端。一开始它非常简单,但随着规则的发展,发现安全漏洞变得越来越困难。实际测试规则的选项有哪些?我查看了 Targaryen,它是一个第 3 方库,但无法启动并在 OSX 上 运行。是否有更通用的方法来测试规则?进行 Firebase 安全测试的最常用方法是什么?
如果您还没有看到它,在您应用的 Firebase 控制面板中,左侧有许多选项;数据、安全和规则、模拟器;模拟器就是你想要的。
在那里,您可以验证为用户,然后在不同的子节点上测试读写能力。
我们制作了自己的小应用程序以 read/write 到不同的节点:随着我们的应用程序的增长,规则的复杂性也随之增加,这使得通过应用程序测试 20 个节点然后测试一个节点变得更加容易一次在模拟器中。我们的测试应用程序大约有 100 行代码。
我刚刚设置了 Bolt,它看起来比通过 Firebase 使用标准规则和模拟器要好得多 UI。
您确实需要实际使用 Bolt 语法,但我发现它无论如何都比标准规则容易得多,尤其是当它们变得越来越大和复杂时,因为 Bolt 允许您为 re-use 通用代码创建函数对于 read/write/validate 逻辑。测试对我来说只是一个奖励。
- 博尔特简介: https://www.firebase.com/blog/2015-11-12-security-rules-bolt-user-data.html
- 测试说明:https://github.com/firebase/bolt/issues/80
注意几点:
- 说明说要全局安装
firebase-bolt
但节点可以找到它,除非它是本地安装的,或者你 link 全局安装。 - 参见 this answer 获取摩卡咖啡 运行ning。如果您在
package.json
文件的scripts
部分将--ui tdd
添加到"test": "mocha --ui tdd"
并将测试保留在test/test.js
中,那么您只需要 运行npm test
到运行你所有的测试。
- 要制定规则,您可以使用 Targaryen。
- 要针对实时数据库测试您的规则,您可以使用 REST api 使用调试标志设置为 true 的令牌(用于创建这些令牌的数据库机密已被弃用,但我不认为您使用新的 Firebase Admin SDK 创建此类令牌);响应 header 将包含有关规则评估的调试信息。
- 要调试您的规则和生产数据,请使用 firebase 控制台中的模拟器(请注意,它不允许模拟更新操作 AFAIK)