Почему WebSockets без Sec-WebSocket-Key1 небезопасны? - PullRequest
9 голосов
/ 29 августа 2010

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

1 Ответ

7 голосов
/ 29 августа 2010

Вот что я мог понять: эти новые поля предназначены для предотвращения кросс-протокольных атак.Предположим, что какой-то вредоносный 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 и т. д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...