Выбор ответа Senior WebSocket и SSE обновлено

WebSocket и CORS

Вопрос

WebSocket-сервер авторизует пользователя по куке сессии. Что верно про безопасность?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: CORS на WebSocket не действует, сервер сам проверяет Origin при handshake. Браузер позволяет любой странице открыть WebSocket на любой хост и приложит куки по правилам SameSite.

Варианты ответа

  1. CORS защищает WebSocket так же, как fetch, поэтому чужой сайт к нему не подключится
  2. Браузер никогда не отправляет куки при WebSocket handshake, поэтому сессию не угнать
  3. Достаточно использовать wss://: тогда открыть канал может только страница своего сайта
  4. CORS на WebSocket не действует, сервер сам проверяет Origin при handshakeправильный ответ

Разбор

Браузер позволяет любой странице открыть WebSocket на любой хост и приложит куки по правилам SameSite. Сервер получит Origin и обязан его проверить: иначе возможна атака Cross-Site WebSocket Hijacking. Варианты про CORS и «куки никогда не шлются» неверны. wss:// шифрует канал, но не ограничивает, кто его открывает.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.