WebSockets - Безопасность
Протокол должен быть разработан из соображений безопасности. WebSocket - это совершенно новый протокол, и не все веб-браузеры его правильно реализуют. Например, некоторые из них по-прежнему позволяют сочетать HTTP и WS, хотя спецификация подразумевает обратное. В этой главе мы обсудим несколько распространенных атак на систему безопасности, о которых должен знать пользователь.
Отказ в обслуживании
Атаки типа «отказ в обслуживании» (DoS) пытаются сделать машину или сетевой ресурс недоступными для пользователей, которые их запрашивают. Предположим, кто-то делает бесконечное количество запросов к веб-серверу с небольшими временными интервалами или без них. Сервер не может обрабатывать каждое соединение и либо перестанет отвечать, либо будет отвечать слишком медленно. Это можно назвать атакой отказа в обслуживании.
Отказ в обслуживании очень разочаровывает конечных пользователей, которые не могут даже загрузить веб-страницу.
DoS-атака может применяться даже к одноранговой связи, заставляя клиентов P2P-сети одновременно подключаться к веб-серверу жертвы.
Человек посередине
Разберемся в этом на примере.
Предположим, что человек A болтает со своим другом Bчерез IM-клиент. Кто-то из третьих лиц хочет просмотреть сообщения, которыми вы обмениваетесь. Таким образом, он устанавливает независимые связи с обоими людьми. Он также отправляет сообщения человекуA и его друг B, как невидимое промежуточное звено в вашем общении. Это известно как атака «человек посередине».
Атака типа «человек посередине» проще для незашифрованных соединений, так как злоумышленник может читать пакеты напрямую. Когда соединение зашифровано, информация должна быть расшифрована злоумышленником, что может быть слишком сложно.
С технической точки зрения злоумышленник перехватывает обмен сообщениями с открытым ключом и отправляет сообщение, заменяя запрошенный ключ своим собственным. Очевидно, что надежной стратегией, которая затруднит работу злоумышленника, является использование 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 - отличные браузеры с точки зрения поддержки разработчиков. Их встроенные инструменты помогают нам определять практически любой аспект взаимодействия и ресурсов на стороне клиента. Это играет большую роль в целях безопасности.