Доступ к параметрам URL в правилах безопасности Firebase RTDB - PullRequest
0 голосов
/ 22 января 2019

Я хочу читать данные из 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()"
        }

    }
}

Есть ли кто-нибудь, к кому я могу получить доступпараметры строки запроса / URL в правилах безопасности Firbase?Я мог бы использовать функции 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".См .: Использование newData для обновлений в правилах безопасности Firebase

1 Ответ

0 голосов
/ 22 января 2019

Это невозможно, а также небезопасно. Правила безопасности Firebase не были бы безопасными, если бы у кого-то был простой пароль, который позволял бы им получать доступ к данным. Довольно просто перепроектировать мобильный клиент, чтобы получить дополнительный пароль, позволяющий выполнить запрос.

Если вы хотите предоставить пользователю доступ к запросу, единственный безопасный способ сделать это - использовать аутентификацию Firebase, которая проверяет личность человека, выполняющего запрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...