【问题标题】:How can I secure Firebase with an all client-side implementation?如何使用所有客户端实现来保护 Firebase?
【发布时间】:2015-09-04 16:58:24
【问题描述】:

我有一个非常简单的 Firebase 应用程序,它在客户端通过 JavaScript 进行读取和写入。我这边没有用户帐户或服务器端应用程序。

现在,任何查看我的 JavaScript 的人都可以复制我的 Firebase URL 并拥有完整的读/写访问权限。

考虑到我在客户端做所有事情,我有什么简单的方法来保护它吗?

我无法理解他们的文档以及如何解决此用例。

【问题讨论】:

标签: javascript firebase firebase-security


【解决方案1】:

数据访问通过 Firebase 的安全规则语言进行管理,您可以在 Firebase 信息中心的“安全与规则”标签中找到该语言。

当您为应用创建新的 Firebase 后端时,它默认允许所有人完全读/写。

{
    "rules": {
        ".read": true,
        ".write": true
    }
}

最简单的改变是让每个人都可以阅读,但没有人可以写作:

{
    "rules": {
        ".read": true,
        ".write": false
    }
}

这样,您只有在您是管理员时才能更改数据,即当您使用 Firebase 信息中心时。

Firebase 文档有一整节专门介绍 securing your data

【讨论】:

  • 感谢您的回复。有没有办法只提供对我的 Javascript 客户端应用程序的写访问权限?我似乎找不到这个案例的例子。
  • 限制对代码的访问,基于您编写该代码的事实?没有。这在每个人都可以简单地复制您的代码的 Web 环境中也无法正常工作。保护数据的常用方法是基于用户的安全性。
  • 如果我没有任何用户,只有一个应用程序,那么我是否必须使用 Firebase Secret 在服务器端生成一个 JWT 令牌,然后将此令牌传递给客户端申请?
  • 是的。或者,如果您不打算与任何人共享此应用程序,您可以将 Firebase 后端的秘密嵌入其中。但是生成 JWT 会更安全。
  • 谢谢,这真的很有帮助。我将研究 JWT 解决方案,因为这对我来说很新。
猜你喜欢
  • 2020-07-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-09
  • 1970-01-01
  • 1970-01-01
  • 2022-01-22
  • 2012-06-19
相关资源
最近更新 更多