【发布时间】:2018-06-06 14:40:47
【问题描述】:
如果我启用了身份验证,并且使用正在使用的登录方法进行身份验证的人是否意味着他仍然可以在浏览器控制台中操作我的数据库?或者只有当firebase在全球范围内公开?我专门询问 react js 开发。
【问题讨论】:
标签: reactjs firebase firebase-realtime-database firebase-authentication firebase-security
如果我启用了身份验证,并且使用正在使用的登录方法进行身份验证的人是否意味着他仍然可以在浏览器控制台中操作我的数据库?或者只有当firebase在全球范围内公开?我专门询问 react js 开发。
【问题讨论】:
标签: reactjs firebase firebase-realtime-database firebase-authentication firebase-security
如果你这样设置规则:
{
"rules": {
".read":true ,
".write": true
}
}
这只是意味着任何人都可以读取和写入数据库。这并不意味着他们可以访问数据库所在的 firebase 控制台。而且这并不意味着如果他们获取了 firebase 数据库 url,那么他们就可以访问您的数据库 - 因为数据库与您的帐户相关联,所以他们无法访问。
只有有权访问您的帐户的人才能进入 Firebase 控制台并在控制台中更改规则和/或您的数据库。
将此作为测试,注销您的帐户并获取 firebase 数据库 url 并将其输入到上面的 url 中,看看您是否能够访问它。
具有上述规则的示例:如果您的网站中有一个登录屏幕,那么即使使用上述规则,用户也不能只登录,因为在您的代码中您指定他必须注册然后才能登录,如果他在数据库中的信息。
假设您使用了这些规则:
{
"rules": {
".read":auth!=null,
".write": auth!=null
}
}
这意味着在您的数据库中读取和写入用户必须经过身份验证才能执行此操作。
这些规则只是用来确定用户可以做什么。 但没有人可以访问您的控制台。
编辑:
如果你使用这个:
{
"rules": {
".read": true,
".write": false,
}
}
然后没有人可以向数据库写入任何内容,例如我想在android应用中添加一个产品,它将被添加到应用中(以图形方式)但不会添加到数据库中,所以如果我回去对于该活动,我不会看到该产品,因为它没有添加到数据库中(因此在从 db 加载产品列表时不会出现)。
【讨论】: