我需要帮助,以确定我的Firebase云修复设置是否安全或易受黑客攻击。
在数据库中,我有一个名为userids的集合,它包含许多文档。每个文档都包含与用户is为文档名称的用户相关的数据。这方面的一个例子是:
userids (collection)
123456 (document)
field1: "..."
field2: "..."
field3: "..."
777777 (document)
field1: "..."
field2: "..."
field3: "..."
999999 (document)
field1: "..."
field2: "..."
field3: "..."然后,我需要的功能如下:
·给定用户as (如userid=123456 ),客户端或服务器必须能够只将数据读写到名称等于123456的文档(客户机/服务器不能将数据读写到名称为777777或999999的文档)。
*任何人在任何情况下都不得查阅数据库中存在的文件清单或任何这些文件的名称。
我执行这一行为的安全规则目前是:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write;
}
}
}现在,假设数据库中的所有用户实际上都是SHA256哈希值,它们唯一地表示每个用户。假设这个SHA256哈希仅为用户所知,这个设置是否安全,因为要从一个文档中读取/写入您需要知道用户哈希的文档?有没有办法让人找出数据库中所有文档的名称?
发布于 2019-10-12 14:58:50
根据您当前的规则,任何人都可以从数据库中准备任何内容。他们不仅可以获取每个单独的文档,而且(据我所见),他们还可以在知道自己所在的集合之后,列出的所有文档。既然userids并不难猜,我想说你在这里很容易被滥用。
更安全的方法是只允许他们知道文档的完整路径/ID,而不允许他们在集合中列出文档。您可以通过使用更多的Firestore粒度规则,将read分解为list和get来实现这一点。
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow get;
}
}
}这允许他们获得一个文档,如果他们知道它的完整路径,但没有得到所有文档的列表。
https://stackoverflow.com/questions/58355189
复制相似问题