如何保护FiRestore数据库 [英] How to secure Firestore database

查看:20
本文介绍了如何保护FiRestore数据库的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个CRUD应用程序(没有登录/注册应用程序),数据存储在Firestore数据库中,这只是一个连接Firestore数据库的角度应用程序。我的FireStore安全规则是allow read, write true,这样我就可以访问我的FireStore数据库。

这是实际的Firebase配置格式

  {
    apiKey: "xxxx",
    authDomain: "xxxx-fi.firebaseapp.com",
    databaseURL: "https://xxx-fi.firebaseio.com",
    projectId: "xx-fi",
    storageBucket: "xx-fi.appspot.com",
    messagingSenderId: "xxx",
    appId: "1:xxx:web:36344b5bddd03c3bcef663"
}

我发现Firebase足以知道projectId,而不能完全发送上述配置。

{
  projectId: "xxxx-fi"
}
只需使用上面的projectId,我就可以在我的Firestore数据库中进行读写。我觉得这是安全风险,如果有人知道我的项目ID,对他们来说,很容易在我的数据库中进行读写。

那么,为了将我的应用程序转移到生产级别,如何保护我的FireStore数据库?

注意:我已经看到人们在Stackoverflow中发布了类似问题的帖子。但却听不懂。请清楚地分享您的解决方案。TIA

推荐答案

项目ID是必需的,以便Firebase SDK知道从何处读取数据/将数据写入何处。可以,具有该项目ID的任何人都可以与您的Firebase项目通信,这就是Firebase Security Rules的用武之地。

allow read, write: if true将允许任何人对您的数据库进行读写操作。

allow read: if true;
allow write: if false;

这些规则将允许任何人读取数据库,但不允许任何人写入数据库。现在,如果您要写入数据库,则必须直接从Firebase控制台执行此操作。

其他选项将是使用Firebase身份验证并仅为您自己创建和帐户。然后您可以编写以下规则:

allow write: if request.auth.uid === "yourFirebaseUID";

这将只允许您的帐户写入数据库。

如果您想要允许多个用户写入您的数据库,那么您可以使用Firebase Custom Claims,它们有点像Discorde上的角色。然后,您可以按如下方式检查索赔:

allow write: if request.auth.token.writerClaim == true;

您能具体说明您要查找的规则类型吗?我或许可以帮助您以这种方式编写规则或建议任何解决方法。

这篇关于如何保护FiRestore数据库的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆