firebase 安全层和操作 (javascript)
firebase security layer and manipulations (javascript)
我想知道 Firebase 是否受到 'scriptkiddies' 的保护。
例如:如果我知道 Firebase 实例(从我在在线教程中看到的),那么我可以从我的浏览器控制台向 Firebase 存储添加一些东西。
var fbinst = new Firebase("https://nettuts-chat-application.firebaseio.com/")
for(var i=0,l=1000;i<l;i++){fbinst.push({comment:'lol'})}
如何避免这种情况?受保护..
Firebase 安全规则是控制对 Firebase 数据库的访问的服务器端表达式。
安全规则带有一组服务器变量,允许您检查服务器值。 auth
变量包含当前经过身份验证的用户,或者 null
如果存在 none。
在以下示例中,只有经过身份验证的用户才能读取和写入自己的数据。
{
"rules": {
"$uid": {
".read": "auth.uid == $uid",
".write": "auth.uid == $uid"
}
}
}
安全规则允许您使用 data
变量读取当前数据,并使用 newData
.
读取尝试的数据
"posts": {
"$post_id": {
".read": "data.child('uid').val() == auth.uid",
".write": "newData.child('uid').val() == auth.uid",
}
}
您还可以使用 .validate
规则验证数据结构。
"posts": {
"$post_id": {
".read": "data.child('uid').val() == auth.uid",
".write": "newData.child('uid').val() == auth.uid",
".validate": "newData.hasChildren(['uid'])"
}
}
我想知道 Firebase 是否受到 'scriptkiddies' 的保护。 例如:如果我知道 Firebase 实例(从我在在线教程中看到的),那么我可以从我的浏览器控制台向 Firebase 存储添加一些东西。
var fbinst = new Firebase("https://nettuts-chat-application.firebaseio.com/")
for(var i=0,l=1000;i<l;i++){fbinst.push({comment:'lol'})}
如何避免这种情况?受保护..
Firebase 安全规则是控制对 Firebase 数据库的访问的服务器端表达式。
安全规则带有一组服务器变量,允许您检查服务器值。 auth
变量包含当前经过身份验证的用户,或者 null
如果存在 none。
在以下示例中,只有经过身份验证的用户才能读取和写入自己的数据。
{
"rules": {
"$uid": {
".read": "auth.uid == $uid",
".write": "auth.uid == $uid"
}
}
}
安全规则允许您使用 data
变量读取当前数据,并使用 newData
.
"posts": {
"$post_id": {
".read": "data.child('uid').val() == auth.uid",
".write": "newData.child('uid').val() == auth.uid",
}
}
您还可以使用 .validate
规则验证数据结构。
"posts": {
"$post_id": {
".read": "data.child('uid').val() == auth.uid",
".write": "newData.child('uid').val() == auth.uid",
".validate": "newData.hasChildren(['uid'])"
}
}