Существует множество различных моделей безопасности, которые вы можете использовать с Firebase, и важно понимать уровень безопасности, который обеспечивает каждый из них.
Одна вещь, на которую стоит обратить внимание, это анонимная аутентификация , которая позволяет вам «аутентифицировать» пользователя, фактически не требуя от него предоставления учетных данных. Это дает возможность гарантировать, что одно и то же устройство используется между несколькими операциями чтения / записи.
В вашем конкретном случае c может показаться, что вы полагаетесь на неуязвимые токены. Это может быть допустимой моделью безопасности для некоторых случаев использования, если ключ достаточно сложен, чтобы быть неуязвимым.
В большинстве своем c способ, которым вы будете структурировать правила безопасности для неуязвимых URL, что-то вроде:
{
"rules": {
"transactions": {
"$key": {
".read": true,
".write": true
}
}
}
}
Это позволяет пользователям читать / записывать определенные c узлы, например, transactions/abc123xyzunguessable
, но , что важно , не разрешает чтение / запись в родительский узел transactions
, Безопасность обусловлена тем фактом, что только человек, который изначально получил неузнаваемый токен, сможет предоставить его снова в будущем.
Лучшая реализация обеспечит запись в $key
, соответствующем ожидаемому неузнаваемому формату, добавив валидация и другие правила чтения / записи, обеспечивающие правильное форматирование данных и, возможно, также предотвращающие изменение ключевых полей.
Это всего лишь несколько указателей, но они должны помочь вам на вашем пути. Важно убедиться, что вы никогда не оставляете важную информацию там, где ее можно прочитать через легко угадываемые URL.