Как я могу установить правила Firebase, чтобы только мой сайт мог читать / записывать данные в Firebase Storage? - PullRequest
0 голосов
/ 29 апреля 2020

У меня есть приложение Firebase, которому нужно отправлять изображения размером 64x64 размером менее 15 КБ в мое хранилище Firebase. (Я получил идею об ограничении размера и размера из этого поста: Проверьте ширину и высоту изображения перед загрузкой с помощью Javascript)

Я попытался настроить authKey в javascript, но это не хотел подключаться, он продолжал говорить «Отказано в доступе 403», хотя у меня был ключ к моей системе хранения.

  var config = {
    apiKey: "643a2fea-f611-42c4-9745-47cea1eb03fc",
    authDomain: "typichead.firebaseapp.com/",
    databaseURL: "https://typichead.firebaseio.com/",
    storageBucket: "typichead.appspot.com"
  };

(все эти ключи уже явно отозваны и изменены)

Таким образом, я установил правило с != auth на == auth, чтобы любой и все могли читать и записывать в систему хранения.

Хотя это обеспечивает такую ​​большую безопасность.

Редактировать: Я удалил и изменил правила обратно на приватные, потому что я публиковал это публично ... не могу, чтобы люди рассылали спам в моем ограниченном хранилище, могу я

Я хочу изменить его поэтому он может отправлять / получать только из ОДНОГО URL: https://typichead.web.app

Я не знаю, как работают "правила" в хранилище баз данных

Вот мой текущий список баз данных правила хранения:

rules_version = '2';
service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
      allow read, write: if request.auth == null;
    }
  }
}

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

, используя let uuid, он случайным образом захватывает uuid и использует его для именования файла и отправить его в мое хранилище Firebase, используя строковые литералы user/${uuid}.png

        if (img.width == "64" && img.height == "64") {
          let uuid = createUUID();
          let storageRef = firebase.storage().ref(`user/${uuid}.png`);

          storageRef.put(file);
        } else {
          alert("Only 64x64 images are allowed!");
        }

Весь исходный код рабочей страницы: https://github.com/FunctFlow/Minecraft-HeadLoader/blob/master/public/index.html

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