Firebase/Firestore/React — что мешает пользователю добавить миллион полей в свой пользовательский документ?

Я исхожу из фона SQL, и я пытаюсь обдумать всю бессхемную концепцию.

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

Я просмотрел много разных примеров React/Firebase/Firestore, и все они, кажется, замалчивают это - так что, может быть, я упускаю здесь что-то очень очевидное?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
2
0
124
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

что мешает пользователю добавлять что-либо в документы, на которые у него есть права записи?

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

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

Спасибо за ваш ответ :) Я думаю, это просто что-то вроде мозгового удара для меня, чтобы база данных была «открытой»? Например... наверняка злонамеренный пользователь сможет сделать... что-то... плохое? а может и нет? может быть, я просто слишком сгорел от всех страшных рассказов о призраках SQL-инъекций?

Benjamin Rasmussen 24.12.2020 01:13

Самой важной частью ответа Дуга были «правила безопасности» — ПЕРЕЙДИТЕ ПО ЭТОЙ ССЫЛКЕ. База данных, безусловно, НЕ открыта, если вы намеренно не установили правила безопасности. Одним из основных отличий SQL-инъекций является то, что «данные» могут содержать символы, которые сбивают с толку оператор SQL строкового типа. Firestore (и NoSQL в целом) НЕ ИСПОЛЬЗУЮТ такой подход, поэтому они менее уязвимы для этой атаки.

LeadDreamer 24.12.2020 02:57

Все базы данных фактически «открыты», если есть какой-то API, который позволяет читать и записывать данные через этот API. Firestore ничем не отличается. Если вы хотите разрешить доступ через API, предоставляемый SDK, вам следует защитить этот доступ с помощью правил безопасности. Если не хотите использовать правила безопасности, то пишите свой API и защищайтесь как хотите.

Doug Stevenson 24.12.2020 03:42

Другие вопросы по теме