【发布时间】:2018-07-09 16:47:13
【问题描述】:
我想创建一个时事通讯订阅表格。这意味着用户无需创建帐户即可注册我的时事通讯。
我想做一个简单的插入。但是保护它的最佳方法是什么?
我已经实现了“匿名登录”(https://firebase.google.com/docs/auth/web/anonymous-auth)
我需要基本规则,read 检查用户是否已注册,write 将用户数据推送到实时数据库。
{
"rules": {
".read": "auth != null",
".write": "auth != null"
}
}
匿名登录完成后,我推送到实时数据库。
let dbConnection = firebase.database().ref('/newsletter_user');
dbConnection.push(datas).then(callback);
问题是匿名身份验证不检查身份验证域。 (How to block localhost in firebase?)
意味着用户可以获取我的 ApiKey 并将数据插入或读取到我的 realbase 数据库中。
那么它对我来说似乎并不安全。我可以做些什么来提高安全性?
【问题讨论】:
-
它有什么不安全的地方?例如。哪些代码现在可以成功运行,而您想要失败?一旦您知道这一点,您就可以调整您的安全规则以符合该要求。
-
感谢@FrankvanPuffelen 规则运行良好,这意味着用户必须先进行匿名身份验证才能将数据推送到实时数据库。但是匿名身份验证总是成功...我已从“授权域”中删除“本地主机”以进行“身份验证”以执行测试,但我仍然可以从本地主机进行匿名身份验证...任何线索?
-
那么,当您从授权域中删除 localhost 时,您是否问为什么可以从 localhost 匿名登录?这是一个有效的问题,但与您原来的帖子完全不同。
-
你说得对,我已经更新了帖子,也是因为我已经对 AuthDomain 进行了解释,但仍在试图找到一种方法来保护我的表单。也许验证码?也不确定。
标签: firebase firebase-realtime-database firebase-security