Firebase存在JavaScript注入攻击的风险。

11

我正在尝试理解/预计使用Firebase作为后端时涉及的安全考虑。

文档涵盖了用户认证和输入验证,但我找不到任何有关恶意用户试图将JavaScript注入数据库所涉及的风险的讨论。

是否可能在保存到数据库的输入字段中包含JavaScript,然后当检索和显示该代码的代码在其他地方执行时,该JavaScript被执行?

或者Firebase是否以某种方式转义或清理数据?


3
http://web.archive.org/web/20150318021824/http://blog.diniscruz.com/2014/02/xss-considerations-when-developing-with.html - user6101582
Firebase是一个很好的JSON数据库,因为它非常快速,但是当涉及到敏感数据/信息时,我更喜欢不使用(关于数据库的选项)。出于安全原因,您必须严格清理任何输入(特别是输入中的JavaScript内容)。 - Juliver Galleto
3个回答

17
任何数据库(或其他存储系统)都可以用于存储恶意代码,这是它们固有的功能:它们只存储数据。
Firebase SDK和支持的库(如AngularFire、EmberFire和ReactFire)确保它们从不将数据库中的信息未转义地嵌入HTML页面。虽然我们(我为Firebase工作)总是可能会错过某些东西,但我不记得曾经有人报告过这种情况。

10
谢谢您的回复。我想答案很简单,但我对Firebase文档中没有任何讨论感到失望。文档包括对数据清理责任的讨论(即数据库与SDK)以及用户需要注意什么以避免问题将非常有帮助。 - Andrew Staroscik
2
我同意缺乏讨论是令人担忧的事情。Firebase 应该明确这一点,这是客户端数据库的一个重大问题。你无法确保任何插入到数据库中的数据都经过了净化处理(除非在数据库规则中可以实现)。我想我们只能对所有数据的输出进行净化处理。 - Gerard Wilkinson
2
是的,这个答案存在的问题在于它将Firebase描述为仅仅是一个数据库或存储系统,但据我所知Firebase正在将自己定位为后端。对我而言,后端不仅仅是一个数据库,还需要处理安全性。 - Andrew Staroscik

5

无论是前端还是后端,当将用户输入放入网页时,都必须正确转义。


3
Firebase的问题在于您无法确保输入已经过清理,因为任何清理都是在客户端执行的,因此很容易被覆盖。 - Gerard Wilkinson
1
使用 admin-sdk,您可以构建一个 Firebase 函数,在将数据插入数据库之前进行服务器端的数据清理。 - Matthew Rideout

1

当你说输出应该被清理时,如何在Firebase中做到这一点呢?你有没有推荐的文档或资源可以教我如何清理数据输出?谢谢。 - JKxbt33

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接