Firebase规则以及如何测试它们

时间:2015-10-14 10:08:56

标签: firebase firebase-security

我正在努力建立一个Firebase后端。在一开始它非常直接,但随着规则的增长,发现安全漏洞更加困难。实际测试规则的选项有哪些?我已经查看了第三方库Targaryen,但无法在OSX上运行它。是否有更常用的方法来测试规则?执行Firebase安全测试的最常用方法是什么?

3 个答案:

答案 0 :(得分:6)

如果您还没有看到它,在您的应用的Firebase控制面板中,左侧有许多选项;数据,安全和规则,模拟器;模拟器是你想要的。

在那里,您可以作为用户进行身份验证,然后在不同的子节点上测试读写能力。

我们制作了自己的小应用程序来读取/写入不同的节点:随着我们的应用程序的增长,规则的复杂性也变得更加容易通过应用程序测试20个节点,然后一个模拟器。我们的测试应用程序大约有100行代码。

答案 1 :(得分:3)

我刚刚设置了Bolt,它看起来比通过Firebase用户界面使用标准规则和模拟器更好。

你确实需要实际使用Bolt语法,但我发现它比标准规则要容易得多,特别是如果它们变得越来越复杂,因为Bolt允许你创建函数来重用公共代码进行读/写/验证逻辑。测试对我来说只是一个奖励。

有几点需要注意:

  • 说明说全局安装firebase-bolt但节点可以找到它,除非它在本地安装或链接到全局安装。
  • 请参阅this answer以让mocha运行。如果您在--ui tdd文件的"test": "mocha --ui tdd"部分中将scripts添加到package.json,并且您将测试保留在test/test.js中,那么您只需要运行{{1}运行所有测试。

答案 2 :(得分:2)

  • 要制定规则,您可以使用Targaryen
  • 要针对实时数据库测试规则,可以使用REST api,使用调试标志设置为true的令牌(用于创建这些令牌的数据库机密已弃用但我不认为您创建此类令牌使用新的Firebase Admin SDK);响应头将包含有关规则评估的调试信息。
  • 要调试规则和生产数据,请使用firebase控制台中的模拟器(请注意,它不允许模拟更新操作AFAIK)