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