【问题标题】:Access URL Parameters In Firebase RTDB Security Rules在 Firebase RTDB 安全规则中访问 URL 参数
【发布时间】:2019-06-16 00:53:02
【问题描述】:

我想从 Firebase 读取数据:

firebase.database().ref('videos/' + $videoId + '/data' ).once('value')

但在安全规则中,我不想让任何人都可以阅读。又不想用:

".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()"
        }

    }
}

有没有人可以访问 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”安全规则。见:Using newData on Updates in Firebase Security Rules

【问题讨论】:

    标签: firebase firebase-security


    【解决方案1】:

    这是不可能的,而且本质上也不是安全的。如果有人有一个简单的密码可以让他们访问数据,那么 Firebase 安全规则将不安全。对移动客户端进行逆向工程以增加允许查询的密码非常容易。

    如果您想向用户授予对查询的访问权限,唯一安全的方法是与 Firebase 身份验证配合使用,该身份验证可验证执行请求的人员的身份。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-15
    • 1970-01-01
    • 2018-04-20
    • 2019-08-14
    • 2022-01-19
    • 2020-06-03
    • 1970-01-01
    • 2016-09-27
    相关资源
    最近更新 更多