@Programep

Как защитить web socket?

Подскажите, пожалуйста, как можно защитить web socket server?
Как я представляю.
1. Допустим есть форма авторизации. В коде страницы авторизации еще нет js-кода с подключение к ws.
2. После авторизации переходим, на страницу, где происходит подключение с ws.
Вот как это соединение отключать если это не авторизованный пользователь? Ведь подключиться может и не только браузер к данному сокету.
  • Вопрос задан
  • 2746 просмотров
Решения вопроса 1
bingo347
@bingo347
Crazy on performance...
браузерный клиент вебсокета отправляет куки (подходит если домен и порт сокета совпадают с http доменом и портом страниц)
так же можно передавать параметры в url сокета - универсальное решение

При авторизации генерируем пользователю токен сессии, я обычно в качестве такого токена использую uuid
При коннекте к серверу передаем этот токен в url, например так:
var protocol = window.location.protocol === 'https:' ? 'wss:' : 'ws:';
var ws = new WebSocket(protocol + '//' + window.location.host + '/' + token);
где в переменной token должна быть строка с токеном сессии

На сервере, при новом соеденении по вебсокету смотрим url и извлекаем из него токен и получаем по нему сессию, если такой сессии нет - обрываем соеденние
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@MaxEpt
oauth и json web token, если серверная часть на node.js - то вот материал в помощь resources.infosecinstitute.com/securing-web-apis-p...
Ответ написан
Комментировать
@Programep Автор вопроса
а если без oauth?
Подскажите еще, пожайлуста, node.js в сравнении с c++ сервером лучше или хуже?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы