如何在Firebase中设置规则,以便只有我的应用可以在数据库Firestore上写?

问题描述 投票:0回答:1

Firebase告诉我我的数据库不安全,因为我有规则:

service cloud.firestore {
 match /databases/{database}/documents {
   match /mypath/{document=**} {
    allow write: if true;
    allow read, delete: if false;
   }
  }
 }

我没有关于读取和删除的问题,因为只有使用FirebaseAdmin的服务器才能执行此类操作。但是我仍然有关于写操作的问题。这就是我切换到此配置的原因:

service cloud.firestore {
  match /databases/{database}/documents {
    match /mypath/{document=**} {
      allow write: if request.resource.data.psw == 'mypassword';
      allow read, delete: if false;
    }
  }
}

我的想法是在应用程序的配置文件中写入一个密码,然后将要保存在Firestore上的数据与密码一起使用。这种方法安全还是有更好的方法?

感谢您的任何建议。

firebase google-cloud-firestore firebase-security-rules
1个回答
0
投票

您正在使用的方案根本不安全,因为您要将“秘密”发送到客户端应用程序。您包含在应用程序中的任何信息基本上都是公共信息,因为很容易分解移动或网络应用程序的数据以查看其工作原理。

安全的方法是使用Firebase身份验证来限制谁可以读取或写入某些数据。这是按用户保护数据库的唯一方法。无法基于每个应用安全地限制对数据库的访问。

请记住,您现在所拥有的还允许任何客户端update任何已知文档而无需提供密码。对于先前最初正确设置的更新,将正确设置request.resource.data.psw。这是因为request.resource.data包含所有先前文档的内容,以及更新中添加的所有更改。

[如果由于某种原因而无法使用Firebase身份验证,那么您现在可以做的是您能做的最好的事情,但实际上应该知道它不是很安全。

© www.soinside.com 2019 - 2024. All rights reserved.