Firebase хранилище всегда общедоступно - PullRequest
1 голос
/ 27 января 2020

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

Я добавил правила в хранилище следующим образом:

rules_version = '2';
service firebase.storage {
  match /b/{bucket}/o {
   match /filearchive/{fileName} {
    allow read: if request.auth != null;        
    allow write: if request.auth.uid + ".pdf" == fileName
  }
 }
}

И после того, как пользователь загружает свои файлы, я отслеживаю загруженные с помощью коллекции Firestore, чтобы сохранить URL-адреса, полученные с помощью метода:

.snapshot.ref.getDownloadURL().then(downloadURL => {

})

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

Я знаю, что могу отозвать токен файла, но это может произойти только после утечки, ее может быть трудно определить (Я не знаю, какие инструменты использовать), и наверняка он использует пропускную способность / данные из моего плана, если этот файл широко используется.

Кто-то знает, что является наилучшей практикой и как защитить загруженный файл и соблюдайте правило «разрешить чтение: если request.auth! = null;»?

С уважением

1 Ответ

2 голосов
/ 27 января 2020

URL-адреса для скачивания всегда доступны всем, у кого есть ссылки. На них никогда не влияют правила безопасности. Если вы действительно хотите ограничить доступ к файлу для определенного пользователя, прошедшего проверку подлинности, вы не должны использовать URL-адреса загрузки, а вместо этого использовать только Firebase SDK в своем приложении, пока пользователь проходит проверку подлинности в вашем приложении. Невозможно предоставить URL-адрес, контролируемый правилами безопасности.

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