Мы с моим другом владеем игрой, которая использует WebSockets для двунаправленной отправки событий обновления состояния.Мы столкнулись с проблемой, когда пользователи писали клиенты на своих компьютерах и подключались.Это создавало много проблем, и мы пробовали много разных способов его предотвращения.
В настоящее время мы только пробовали читать заголовки WebSocket, особенно такие вещи, как Origin
, но это тоже можно подделать.Еще один метод, который мы собираемся реализовать, - генерация уникального ключа и отправка его в качестве заголовка при загрузке страницы.Затем браузер сохранит этот ключ и отправит его как Sec-WebSocket-Key
, затем сервер аннулирует этот ключ, чтобы его нельзя было использовать для дальнейшего использования.Это также ошибочный метод, поскольку клиенты могут просто запросить сайт, прочитать заголовки, а затем запустить соединение WebSocket с использованием этого уникального ключа.
Я заметил, что сайт, такой как diep.io, имеет строгую защиту от этого,и каким-то образом предотвращают любые внешние подключения за пределами браузера.Я даже попробовал все, чтобы попасть в их WebSocket, но он просто не работает.
Какие еще методы мы могли бы использовать, чтобы предотвратить использование фальшивых соединений WebSocket?