1

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

Как указано здесь: Does firebase encrypt data with a unique key per account? В нем говорится, что данные зашифрованы перед записью в базу данных. Это, однако, не включает изменение значений ключей, когда ключи не «прибывают» в Firebase.

Возможно ли изменить значение из мониторинга сетевых действий, таких как данные вмешательства?

Кроме того, предположим, что это какие-то правила:

{ 
    "rules": { 
    "users": { 
     "$uid": { 
     ".read": "$uid === auth.uid", 
     ".write": "$uid === auth.uid" 
     } 
    } 
    } 
} 

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

Спасибо

ответ

7

В ваших предусмотренных правилах, пользователь сможет записывать произвольные данные в узел, соответствующий их собственные uid, который может быть получен только через подписание с использованием формой Firebase Authentication (включая чеканку пользовательский маркер на стороне сервера, используя SDK Firebase Admin).

100% трафика базы данных Firebase Realtime отправляется через TLS-зашифрованные соединения. Нельзя использовать этот трафик и менять его в полете.

Вы можете доверять правилам безопасности базы данных Firebase, чтобы выполнять свою работу, но вам нужно написать надежные правила, которые адекватно защищают данные для ваших конкретных случаев использования приложений. Я бы рекомендовал правила .validate для структуры и мелкозернистых правил .write везде. Еще один важный вопрос, который следует помнить, заключается в том, что авторизация является иерархической. Как только правило .write соответствует клиенту , все дети этого узла могут быть написаны этим клиентом.