Может ли значение временной метки Firebase быть легко подделано в клиентском коде? - PullRequest
1 голос
/ 16 апреля 2019

Я хочу знать, может ли это поле сервера, которое отправляется с сервера с инструкцией, подобной этой:

         result.put("timestamp", ServerValue.TIMESTAMP);

Может быть легко подделано или нет, я имею в виду, я просто не вижу столько то, что злонамеренный пользователь может перехватывать трафик TPC / IP и изменять это значение ServerValue.TIMESTAMP на любое значение, которое он пожелает.

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

Но я хотел бы знать наверняка, я хочу знать, есть ли какой-то механизм, чтобы избежать этого, который делает фальсификациюупомянутое значение сложнее, чем просто захват трафика tcp / ip на лету и его изменение.

1 Ответ

1 голос
/ 16 апреля 2019

ServerValue.TIMESTAMP - это значение дозорного, которое отправляется на серверы Firebase в виде специальной карты. Сервер распознает этот страж и расширяет его до правильной даты / времени. Поскольку это расширение происходит на серверах Google, злоумышленник не может изменить его.

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

Как это сделать, зависит от базы данных, которую вы используете.

Для базы данных в реальном времени:

".validate": "data.val() === now"

Для облачного хранилища:

allow create: if request.resource.data.timestamp == request.time;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...