Комментарии 8
Socket.IO для Node.JS это не имплементация websocket, это грубо говоря кастомный протокол, который работает поверх нескольких типов транспорта, включая вебсокеты. К нативным вебсокетам нельзя подключиться клиентом Socket.IO и наоборот.
Я как разработчик веб-приложения, в котором используются веб-сокеты со сложно-структурированными джейсонами, слабо представляю кейс, в котором буду платить деньги кому-то вместо того, чтобы реализовать у себя дополнительную валидацию отдельно взятых полей. Ведь решение для меня будет очень кастомное и ждать вашу реализацию я буду долго. Она ещё ведь будет съедать мои вычислительные ресурсы. Причём, если вдруг я захочу изменить свои структуры, то мне придётся ещё ждать, когда вы обновите свою реализацию в WAF.
В общем, слишком сферически-вакуумная статья. Слабо представляю реализацию защиты веб-сокетов на практике.
Если бы все разработчики реализовывали надежные методы фильтрации входящих данных, то WAF не были бы нужны и для HTTP. Люди допускают ошибки, и WAF - это дополнительный рубеж обороны.
Для нормального WAF не важно, какой JSON, сложно структурированный или попроще, - он должен парситься. А вот если у вас свой формат, то да, вы правы: WAF про него ничего не знает и, скорее всего, не сможет корректно распарсить.
Не только мы заявляем о поддержке вебсокетов; есть множество других вендоров. В статье описан вариант, как можно протестировать качество защиты вебсокетов, если для вас это актуально.
Для нормального WAF не важно, какой JSON
А как он узнает, какие поля надо проверять, а какие нет? И как он узнает правила проверки этих полей?
Требования к защите WebSockets в стандарте ASVS (см. раздел V13.5) - https://github.com/OWASP/ASVS/blob/master/5.0/en/0x21-V13-API.md
Сценарии тестирования защищённости WebSockets в руководстве WSTG - https://github.com/andrettv/WSTG/blob/master/WSTG-ru/4-Web_Application_Security_Testing/11-Client-side_Testing/10-Testing_WebSockets.md
WAF для Вебсокетов: рабочее решение или иллюзия?