WebSocket вводится в веб-приложения как протокол связи.,Это не решит проблему Контрольного вопроса в веб-приложениях., поэтому реализация безопасности приложений WebSocket является обязанностью разработчика или сервера. Это требует от разработчиков понимания потенциальных рисков безопасности приложений WebSocket и того, как безопасно разрабатывать их, чтобы избежать этих рисков. вопрос。
Использование JWT для аутентификации является распространенной практикой, поскольку позволяет удобно передавать идентификационную информацию пользователя между клиентом и сервером. При общении через WebSocket аутентификация JWT может быть достигнута путем передачи параметров токена через URL-адрес.
Вот общие шаги для достижения этой цели:
ws://wss.tinywan.com/socket?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
Обратите внимание, что токены JWT всегда следует передавать безопасными способами, например с помощью wss://
(WebSocket Secure, зашифрованная версия протокола WebSocket), чтобы избежать атак «человек посередине». Кроме того, JWT не должны содержать конфиденциальную информацию, поскольку их можно декодировать (хотя их невозможно подделать без ключа).
Основная цель добавления токена в связь через WebSocket — обеспечить аутентификацию и авторизацию, гарантируя, что только проверенные пользователи смогут установить. соединение WebSocket。потому чтоWebSocket API
本身不支持直接существоватьсоединятьустановка времениHTTPголова,Поэтому для передачи токена необходимо использовать некоторые альтернативные методы.
Этот метод прост и понятен, но имеет более низкий уровень безопасности, поскольку токен будет виден в URL-адресе и его можно легко перехватить.
var ws = new WebSocket("ws://wss.tinywan.com?authorization="+ACCESS_TOKEN);
ws.onopen = function(evt) {
ws.send("Идеи аутентификации, авторизации и реализации");
};
var ws = new WebSocket("ws://wss.tinywan.com");
ws.addEventListener('open', (event) => {
ws.send('Authorization: Bearer ' + ACCESS_TOKEN);
});
Используйте функцию подпротокола WebSocket для передачи токена. Этот подход требует поддержки на стороне сервера и правильной обработки подпротоколов.
const access_token = localStorage.getItem('access_token');
var ws = new WebSocket("ws://wss.tinywan.com",[access_token]);