Подтвердить что ты не робот

Безопасны или нет?

wikipedia появляется на экране websockets:

Для поддержки веб-браузера безопасная версия протокола WebSocket реализована в Firefox 6 (с именем MozWebSocket), [2] Google Chrome 14 [3] и предварительном просмотре разработчиков Internet Explorer 10. ... Хотя нет известных эксплойтов, он был отключен в Firefox 4 и 5...

но w3 заявляют, что они небезопасны:

Следующие HTTP-процедуры здесь могут привести к серьезным проблемам безопасности в контексте веб-браузера. Например, рассмотрите хост с сервером WebSocket на одном пути и открытый перенаправитель HTTP на другом. Внезапно любой script, которому может быть присвоен конкретный URL-адрес WebSocket, можно обмануть в общении с (и потенциально разделяющим секреты) с любым хостом в Интернете, даже если script проверяет, имеет ли URL правильное имя хоста.
  • являются http websockets (ws:) безопасными или нет?

  • являются https websockets (wss:) безопасными или нет?

  • если не # 2, существуют ли подтвержденные профилактические меры?

4b9b3361

Ответ 1

Существует множество различных аспектов безопасности WebSocket.

Снимки из википедии, которые вы цитировали, относятся к маскировке клиента WebSocket для данных сервера. Это делается для защиты недопустимых посредников (например, прокси-серверов и кешей) от случайного толкования трафика WebSocket в качестве обычного HTTP-трафика. Опасность здесь в том, что протокол WebSockets можно использовать для отравления кэширующего посредника. Тем не менее, я должен отметить, что это была чисто теоретическая проблема, но было достаточно беспокойства о том, что Mozilla и Opera неохотно поставляют версии протокола HISI и ранних версий HyBi для протокола WebSocket. Таким образом, IETF решил добавить к серверу маскировку данных для решения проблемы.

В стороне IETF отвечает за протокол WebSocket (IETF 6455), а W3C отвечает за API WebSocket HTML5 (объект, методы и события Javascript).

Другим аспектом безопасности WebSocket является защита от перекрестного происхождения. Второй фрагмент кода, который вы указали в спецификации API W3C WebSocket, связан с безопасностью перекрестного происхождения. WebSockets поддерживает межсетевые соединения (к другому хосту, с которого была отправлена ​​HTML-страница). Это предупреждение говорит о том, что для WebSockets были использованы , если обычные процедуры кросс-генерации HTTP, это откроет огромную дыру в безопасности. Тем не менее, процедура WebSocket отличается именно по этой причине. Во-первых, квитирование и ответ WebSocket сконструированы таким образом, чтобы соединения WebSocket не могли быть сделаны на HTTP-сервере, который не поддерживает соединения WebSocket: сервер должен подписать/хешировать ключ в специальном способе WebSocket и вернуть это в ответ на подтверждение. Вторая часть заключается в том, что браузер должен отправить заголовок Origin как часть рукопожатия (это указывает, откуда был загружен HTML/Javascript изначально). Это позволяет серверу выбирать, какие домены он позволит создавать соединения WebSocket.

Наконец, существует два режима подключения к WebSocket: незашифрованный (ws://) и зашифрованный (wss://). Зашифрованный режим использует шифрование TLS/SSL для шифрования всех данных, отправленных на сервер и с сервера (включая начальное рукопожатие и ответ). Это тот же механизм шифрования, который используется для HTTPS-соединений (и использует тот же механизм шифрования в браузере). Это предотвращает слежение за третьими лицами за передаваемые данные.

Есть действительно только две версии протокола WebSocket, о которых стоит знать:

  • Hixie76. В этой версии протокола добавлена ​​защита от перекрестного происхождения и хэширование/подпись заголовков. Однако из-за способа разработки протокола трудно добавить поддержку для существующих веб-серверов. Это версия, поддерживаемая в настоящее время в iOS (надеюсь, что iOS 6, наконец, обновится до IETF 6455)

  • IETF 6455. Это версия протокола WebSocket, стандартизованная IETF в ноябре прошлого года (ноябрь 2011 г.). Это стало кульминацией работы рабочей группы IETF HyBi (итерации протокола, ведущего к ней, были обозначены как HyBi XX). Это версия, поддерживаемая текущими версиями Chrome и Firefox, а также IE 10 и вскоре Opera.