Nano Hash - криптовалюты, майнинг, программирование

Firebase — разрешить вход только из приложения, используя пароль и адрес электронной почты

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

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

Я, конечно, реализовал правила безопасности, но вошедшие в систему пользователи по-прежнему могут читать и записывать данные в базу данных в разных местах, поэтому в основном они могут подключать мою базу данных Firebase с помощью Javascript API, а затем читать и записывать? И кто-нибудь может создать пользователя, если он знает URL-адрес моей базы данных?

Есть ли какой-нибудь способ предотвратить это, например, использовать пользовательский токен при входе в систему с адресом электронной почты и паролем?

15.12.2015

Ответы:


1

Чтобы ответить на некоторые ваши вопросы:

... но вошедшие в систему пользователи по-прежнему могут читать и записывать данные в базу данных в разных местах, поэтому в основном они могут подключить мою базу данных Firebase с помощью Javascript API, а затем читать и записывать?

Вы можете использовать правило $other. чтобы убедиться, что в вашу базу данных Firebase не записываются дополнительные ключи:

"$other": {
  ".validate": "false"
},

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

{
  "rules": {
    ".read": "auth != null", // only authed users can read/write
    ".write": "auth != null",
    "users": {
      "$uid": {
        ".read": "auth.uid == $uid", // users can read/write their own data
        ".write": "auth.uid == $uid"
      }
    }
  }
}

И кто-нибудь может создать пользователя, если он знает URL-адрес моей базы данных?

Для создания пользователей вам также необходимо иметь действительное происхождение, которое вы указали на панели приложений. Это означает, что не каждый, у кого есть ваш URL, может начать создавать пользователей.

введите здесь описание изображения

15.12.2015
  • Для создания пользователей вам также необходимо иметь действительное происхождение, которое вы указали на панели приложений. Это означает, что не каждый, у кого есть ваш URL, может начать создавать пользователей. Но это, кажется, относится только к сторонней аутентификации? И потенциально они могли бы создать свое собственное приложение для iOS и подключить его к моей базе данных Firebase. 15.12.2015
  • Я реализовал правило $other, но они по-прежнему могут писать в разрешенные узлы/ключи. Хотя я выполняю базовую проверку в своих правилах (например, .isNumber() .isString() и т. д.), большая часть проверки моих данных выполняется в приложении, которое они могут обойти, если не используют приложение. 15.12.2015
  • Origin по-прежнему работает для электронной почты и пароля. Также проверка работает, даже если они не используют приложение, потому что безопасность происходит на сервере. 15.12.2015
  • Я имел в виду проверку, которую я имею в своем приложении, которая выполняется до того, как данные будут отправлены в базу данных Firebase. Как работает origin при использовании iOS SDK? 15.12.2015
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

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

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..