访问Firebase RTDB安全规则中的URL参数
我想从Firebase读取数据:访问Firebase RTDB安全规则中的URL参数,firebase,firebase-security,Firebase,Firebase Security,我想从Firebase读取数据: firebase.database().ref('videos/' + $videoId + '/data' ).once('value') 但在安全规则中,我不想让任何人都能读懂。Aka我不想使用: ".read" : true 我希望未经验证的用户能够读取数据,如果他们有一个特殊的令牌,他们在url中传递 firebase.database().ref('videos/' + $videoId + '/data?token=secretToken').o
firebase.database().ref('videos/' + $videoId + '/data' ).once('value')
但在安全规则中,我不想让任何人都能读懂。Aka我不想使用:
".read" : true
我希望未经验证的用户能够读取数据,如果他们有一个特殊的令牌,他们在url中传递
firebase.database().ref('videos/' + $videoId + '/data?token=secretToken').once('value')
我的视频数据如下所示:
{
vidoes: {
$videoId: {
data: {
...
}
tokens: {
secretToken: true
}
}
}
{
vidoes: {
$videoId: {
data: {
".read": "data.parent().child('tokens/' + auth.urlQuery('token').val() ).exist()"
}
}
}
我想安全规则应该是这样的:
{
vidoes: {
$videoId: {
data: {
...
}
tokens: {
secretToken: true
}
}
}
{
vidoes: {
$videoId: {
data: {
".read": "data.parent().child('tokens/' + auth.urlQuery('token').val() ).exist()"
}
}
}
是否有人可以访问Firbase安全规则中的查询字符串/url参数?我可以使用Firebase函数创建api,但这是一个额外的步骤和网络请求
本质上,它的行为类似于Firebase存储的“令牌”:
https://firebasestorage.googleapis.com/v0/b/columbus-c4de8.appspot.com/o/richContent%2F1-min.jpeg_-LPgLxBMt1tBR0dDdNzH?alt=media&token=dfe24c92-e0c2-484a-81df-c09a710b3d34
如果令牌正确,则用户可以读取数据
注意:从技术上讲,可以为“.write”安全规则使用令牌。请参阅:这是不可能的,也不是天生安全的。如果任何人有一个简单的密码让他们访问数据,Firebase安全规则就不安全。对移动客户端进行反向工程以增加允许查询的密码是非常容易的
如果您想向用户授予对查询的访问权,唯一安全的方法是与Firebase身份验证同时进行,这将验证执行请求的人的身份。这与Firebase存储文件中包含的令牌不是同一概念吗。。。我刚刚编辑了我的问题,以包含对firebase存储文件中使用的“token”参数的引用。