Учебники

WebSockets — Безопасность

Протокол должен быть разработан по соображениям безопасности. WebSocket — это совершенно новый протокол, и не все веб-браузеры реализуют его правильно. Например, некоторые из них по-прежнему допускают смешивание HTTP и WS, хотя спецификация подразумевает обратное. В этой главе мы обсудим несколько распространенных атак безопасности, о которых должен знать пользователь.

Отказ в обслуживании

Атаки отказа в обслуживании (DoS) пытаются сделать компьютер или сетевой ресурс недоступным для пользователей, которые его запрашивают. Предположим, кто-то делает бесконечное количество запросов к веб-серверу без временных интервалов или с небольшими интервалами. Сервер не может обрабатывать каждое соединение и либо перестанет отвечать на запросы, либо будет продолжать отвечать слишком медленно. Это можно назвать атакой отказа в обслуживании.

Отказ в обслуживании очень расстраивает конечных пользователей, которые не могут даже загрузить веб-страницу.

DoS-атака может даже применяться к одноранговой связи, заставляя клиентов сети P2P одновременно подключаться к веб-серверу жертвы.

Человек посередине

Позвольте нам понять это с помощью примера.

Предположим, что человек A общается со своим другом B через IM-клиент. Какой-то третий человек хочет просматривать сообщения, которыми вы обмениваетесь. Таким образом, он устанавливает независимые связи с обоими людьми. Он также отправляет сообщения человеку А и его другу Б как невидимому посреднику в вашем общении. Это известно как атака «человек посередине».

Атака «человек посередине» проще для незашифрованных соединений, так как злоумышленник может читать пакеты напрямую. Когда соединение зашифровано, информация должна быть расшифрована злоумышленником, что может быть слишком сложно.

С технической точки зрения злоумышленник перехватывает обмен сообщениями с открытым ключом и отправляет сообщение, заменяя запрошенный ключ своим собственным. Очевидно, что надежной стратегией, затрудняющей работу злоумышленника, является использование SSH с WebSockets.

В основном при обмене критически важными данными предпочитайте безопасное соединение WSS вместо незашифрованного WS.

XSS

Межсайтовый скриптинг (XSS) — это уязвимость, которая позволяет злоумышленникам внедрять клиентские скрипты в веб-страницы или приложения. Злоумышленник может отправить код HTML или Javascript, используя концентраторы вашего приложения, и разрешить выполнение этого кода на клиентских компьютерах.

Собственные механизмы защиты WebSocket

По умолчанию протокол WebSocket разработан для обеспечения безопасности. В реальном мире пользователь может столкнуться с различными проблемами, которые могут возникнуть из-за плохой реализации браузера. Со временем поставщики браузеров исправляют любые проблемы немедленно.

Дополнительный уровень безопасности добавляется при использовании безопасного соединения WebSocket через SSH (или TLS).

В мире WebSocket основной заботой является производительность защищенного соединения. Хотя еще есть дополнительный уровень TLS, сам протокол содержит оптимизации для этого вида использования, кроме того, WSS работает более гладко через прокси.

Маскировка клиент-сервер

Каждое сообщение, передаваемое между сервером WebSocket и клиентом WebSocket, содержит определенный ключ, называемый маскирующим ключом, который позволяет любым посредникам, совместимым с WebSocket, снимать маску и проверять сообщение. Если посредник не совместим с WebSocket, сообщение не может быть затронуто. Браузер, который реализует протокол WebSocket, обрабатывает маскирование.

Панель инструментов безопасности

Наконец, могут быть представлены полезные инструменты для исследования потока информации между клиентами и сервером WebSocket, анализа обмениваемых данных и выявления возможных рисков.

Инструменты разработчика браузера

Chrome, Firefox и Opera — отличные браузеры с точки зрения поддержки разработчиков. Их встроенные инструменты помогают нам определить практически любой аспект взаимодействия и ресурсов на стороне клиента. Это играет большую роль в целях безопасности.