我收到一封电子邮件,表明我正在“测试模式”下开发,但它使我的数据库完全开放给互联网。我最初接受的默认规则如下所示:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
// This rule allows anyone on the internet to view, edit, and delete
// all data in your Firestore database. It is useful for getting
// started, but it is configured to expire after 30 days because it
// leaves your app open to attackers. At that time, all client
// requests to your Firestore database will be denied.
//
// Make sure to write security rules for your app before that time, or else
// your app will lose access to your Firestore database
match /{document=**} {
allow read, write: if request.time < timestamp.date(2019, 12, 14);
}
}
}
需要做些什么来满足这封电子邮件的要求?
7条答案
按热度按时间stszievb1#
这里显示的安全规则与以前的默认规则有所不同,这些规则更加宽松。此规则的想法是:
是你可以不受限制地访问你的Firestore数据库,直到给定的日期,为了自由地试验它一个月。然而,允许不受限制的访问显然是一个巨大的安全漏洞,从长远来看。
建议的做法是首先完全删除此规则,因为它允许任何人读取和写入数据库中的任何内容。然后,设计一些适当的规则,只允许访问最终用户应该能够访问的集合和文档。对此的全面讨论不在Stack Overflow的主题范围内(因为我们不知道您的应用的要求),但这里有一些开始学习安全规则的好地方:
您应该做的是为数据库中的每个集合和子集合调用访问约束。理想情况下,您应该锁定对所有集合的未经身份验证的写访问权限,除非绝对需要。在最好的情况下,您使用Firebase身份验证来帮助控制仅在经过身份验证的用户需要时对文档的访问。
或者,如果您已完成对数据库的操作(暂时),则可以通过专门使用以下规则完全阻止Web和移动的客户端对数据库的访问:
使用此规则,仍然允许使用Firebase Admin SDK或其他Cloud SDK从后端代码进行访问。
yzuktlbb2#
或者如果你像我一样,谁还在测试模式?只要更新日期
o4tp2gmn3#
每当你在firebase上启动一个新项目(或)设置一个firestore数据库时,firebase默认会为你的数据库添加一组规则,看起来像这样。
“timestamp.date”的日期是从项目开始后的1个月。或多或少就像30天的免费试用。绕过这个日期后,数据库会拒绝所有客户端请求。因此,电子邮件基本上是提醒您更改安全规则。一个简单的方法是只允许对经过身份验证的用户的读/写请求。
请注意,这是定义规则的方法之一,不需要完全按照所示,您可以根据您的需求进一步进行修改。
tgabmvqs4#
当你创建一个firestore数据库时,你有30天的访问权限。你的规则看起来像这样。
日期部分在这里很重要。如果你想在测试模式下使用更长的时间,你可以增加这个日期。
或者,最好在开发应用程序时将访问权限设置为任何经过身份验证的用户,例如
最好总是更加具体,尤其是在生产环境中部署时。在这种情况下,您的规则可以是:
您可以在官方文档中阅读更多详细信息-https://firebase.google.com/docs/rules/basics
iugsix8n5#
Firebase] Cloud Firestore数据库的客户端访问权限将在2天后过期
你选择在测试模式下开始开发,这会使你的Cloud Firestore数据库对互联网完全开放。由于你的应用容易受到攻击,因此你的Firestore安全规则已配置为在前30天后停止允许请求。在2天内% s),所有对Firestore数据库的客户端请求都将被拒绝。在此之前,请编写强有力的安全规则,使您的应用程序能够正常运行,同时适当地保护您的数据。如果您在过去24小时内修改了规则,则可能无法说明这些更改。
如果你从Firebase收到这种电子邮件,那么你必须去编辑规则,然后简单地更改日期。
pobjuy326#
由于您在测试模式下使用Firestore,它提供了30天的试用期。之后,如果您想使用更长的时间,您需要更新Firestore中的规则。
您的当前规则如下所示:
现在你需要更新它!
或者,如果您想在测试模式下使用更长时间,您可以增加此日期(从今天起可以增加1个月)。
或者,最好在开发应用程序时将访问权限设置为任何经过身份验证的用户,例如
或者,如果您正在生产环境中部署。在这种情况下,您的规则可以是,
只要改变你的规则的任何上述2条规则,你都很好去。
zengzsys7#
对于firebase v9,你可以只更新你想要使用测试数据库的时间框架,更新下面屏幕截图中显示的规则: