Что проверять перед тем, как разрешать соединение ws?
Я проверяю origin. И если он совпадает, то разрешаю соединение. Это позволяет защитить сервер от подключений со сторонних ресурсов.
Но, в браузерной консоли origin тоже совпадает, соответственно можно установить соединение через консоль и послать какой-то запрос, который завалит сервер! То есть, злоумышленник подключается к ресурсу, открывает консоль, пишет там например:
var x = new WebSocket('ws://site.ru:3000/');
x.send(/*тут какое-то сообщение*/)
и сервер падает)
Как быть в таком случае?
Вешать дополнительные проверки для отсеивания левых запросов не вариант, нужно беспрепятственное поступление данных! Нужно как-то решить это на уровне рукопожатия (handshake)
Сам сервер опен сорсный, поэтому защита должна быть логической (без хитростей
)
В качестве вебсокетов использую
ws