Я занимаюсь некоторыми исследованиями в отношении защищенных токенов и Firebase JS, но у меня есть некоторая противоречивая информация, поэтому я просто задам свой вопрос напрямую. Можно ли обрабатывать безопасные сеансы с помощью Firebase с помощью Javascript? Для практики я создаю небольшую веб-игру, которая будет полагаться на Firebase для синхронизации каждого клиента, и мне интересно, как сделать это безопасно.
Это зависит от того, как вы определяете “безопасный сеанс”. Здесь есть две проблемы.
-
Безопасность на уровне транспортного уровня. Клиент JS Firebase взаимодействует с серверами через HTTPS. Кроме того, Firebase имеет систему правил безопасности, которая позволяет указать, какие клиенты могут читать и записывать данные.
-
Надежность уровня приложения: однако клиент может делать все изменения, на которые он разрешен, даже если они не запускаются вашим JS-кодом. Например, на веб-странице я могу открыть консоль разработчика и использовать API Firebase для внесения изменений данных, которые не являются частью логики веб-страницы.
Чтобы справиться с последним, вам понадобится сервер, на котором вы можете запустить надежный код, чтобы обеспечить соблюдение игрового состояния. Например, каждое движение, сделанное клиентом в игре, должно быть сначала помещено в “ожидающую” очередь. Серверный процесс должен отслеживать все ожидающие изменения, проверять их и переместить их в “конечное” состояние состояния игры, которое станет авторитетным игровым состоянием.