访问Firebase RTDB安全规则中的URL参数

访问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读取数据:

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”参数的引用。