Аутентификация хранилища Firebase позволяет неаутентифицированным пользователям - PullRequest
0 голосов
/ 02 ноября 2018

Это может быть "работает как задумано", но я хочу быть уверен ...

Я начинаю использовать образцы Firebase для хранения и аутентификации. Используя их пример для разрешения хранения, я настроил его как:

// Grants a user access to a node matching their user ID
service firebase.storage {
  match /b/{bucket}/o {
    // Files look like: "user/<UID>/path/to/file.txt"
    match /user/{userId}/{allPaths=**} {
      allow read, write: if request.auth.uid == userId;
    }
  }
}

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

Я загружаю файл, и он правильно переходит в соответствующее место в Firebase. Затем получение URL-адреса из getDownloadURL() дает мне ссылку, которая выглядит следующим образом:

https://firebasestorage.googleapis.com/v0/b/myapp/o/user%2FMY USER UID%2Ffilename.jpg?alt=media&token=SOME_GUID

Затем я могу вывести это изображение в своем браузере для этого пользователя, но копирование и вставка этого URL также работает в неаутентифицированном окне браузера.

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

Я думаю, что прочитал, что GUID токена истекает через некоторое время, но это все еще не кажется мне хорошей безопасностью - кажется, что файл cookie безопаснее, чем помещать все в URL, чтобы предотвратить случайное раскрытие личных файлов.

Правильно ли я поступаю, и мне нужно с этим смириться, если я использую хранилище Firebase, как было задумано?

Я запускаю веб-страницу локально, если это имеет значение.

...