Почему WebSockets без Sec-WebSocket-Key1 небезопасны?

Старый и замененный проект 75 спецификации WebSocket не ' t указать заголовки HTTP-запроса Sec-WebSocket-Key1 и Sec-WebSocket-Key2. Почему последний проект включает их и что с точки зрения повышения безопасности?

9
задан pts 29 August 2010 в 05:10
поделиться

1 ответ

Вот что я смог выяснить: эти новые поля предназначены для предотвращения межпротокольных атак. Предположим, что в веб-браузере запущен какой-то вредоносный код JavaScript, пытающийся подключиться к серверам, отличным от HTTP и WebSocket (например, FTP, telnet, SSH). В черновике 75 рукопожатие состояло только из того, что клиент отправлял заголовок рукопожатия WebSocket, а сервер ничего не отвечал.После этого клиент мог отправлять \x00...\xFF фреймовые сообщения. Таким образом, вредоносный код JavaScript в клиенте мог бы подключиться к серверу, отличному от WebSocket (например, telnet), попытаться войти в систему и выполнить там команды. После введения Sec-WebSocket-Key1 попытка подключения к WebSocket будет неудачной, если сервер не вернет контрольную сумму MD5 Sec-WebSocket-Key1 и т. д. Принудительное использование не-WebSocket (например, telnet) сделать это практически невозможно, особенно потому, что код JavaScript не контролирует Sec-WebSocket-Key1 и т. д.

7
ответ дан 3 November 2019 в 04:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: