Code前端首页关于Code前端联系我们

Web 网络传输协议层安全:Web Socket 安全分析

terry 2年前 (2023-09-28) 阅读数 70 #Web安全

https://www.cainiaoxueyuan.com/anquan/1。概述

WebSocket 是 HTML5 中一种新的网络传输协议。它位于 OSI 模型的应用层,可以通过单个 TCP 连接执行全双工通信。

https://www.cainiaoxueyuan.com/anquan/1.https://www.cainiaoxueyuan.com/anquan/1HTTP与WebScoket

段落首行缩进,表格居中,如表https://www.cainiaoxueyuan.com/anquan/1所示。字体一般为雅黑或宋体,字号统一。 5、Web客户端和服务器之间的通信大部分使用HTTP(HTTPS还在传输层和应用层之间增加了一个SSL/TLS协议层,这里没有太大影响,所以无所谓)。 HTTP 协议是请求-响应。从 HTTP https://www.cainiaoxueyuan.com/anquan/1.https://www.cainiaoxueyuan.com/anquan/1 开始,TCP 连接可以重用。即使网络连接保持打开状态,这也将用于请求和响应的单独事务。

WebSocket 和 HTTP 都是应用层协议,都基于 TCP 协议。 WebSocket简化了客户端和服务器之间的数据交换,允许服务器主动向客户端发送数据。在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就可以建立持久连接,进行双向数据传输。此外,WebSocket 基于二进制传输帧。

RFC 6455 规定:

WebSocket 在 HTTP 端口 80 和 443 上运行,支持 HTTP 代理和代理,从而与 HTTP 协议兼容。

提示:ws 协议默认为端口 80,wss 默认为端口 443

为了实现兼容性,WebSocket 握手使用 HTTP Upgrade 标头从 HTTP 更改为 WebSocket。与 HTTP 协议类似,“wss”协议通过加密的 TLS 连接建立 WebSocket,而“ws”协议使用未加密的连接。

https://www.cainiaoxueyuan.com/anquan/1.2Demo

  • 安装依赖

npm install ws

  • server.js

// WebSocket模块导入:
const WebSocket = require('ws'); ​
// 参考服务器类:
const WebSocketServer = WebSocket.Server;

// 实例:
const ws = new WebSocketServer({
port: 30 00 } ) ;

// 连接事件用于处理已连接的WebSocket
ws.on('connection', function (ws) {
console.log("Connected!!!" ) ;
});

node tt.js 启动服务器

  • client

直接在浏览器控制台界面输入,服务器端会打印相应的日志信息

var ws = new WebSocket ("ws ://https://www.cainiaoxueyuan.com/anquan/127.0.0.https://www.cainiaoxueyuan.com/anquan/1:3000");

https://www.cainiaoxueyuan.com/anquan/1.3 处理流程

服务器:



var ws = new WebSocket ( "ws:/ /https://www.cainiaoxueyuan.com/anquan/127.0.0.https://www.cainiaoxueyuan.com/anquan/1:3000");
Loaded!!

客户端发起握手请求

GET / HTTP/https://www.cainiaoxueyuan.com/anquan/1.https://www.cainiaoxueyuan.com/anquan/1
主机:https://www.cainiaoxueyuan.com/anquan/127.0.0.https://www.cainiaoxueyuan.com/anquan/1:3000
用户代理:Mozilla/5.0(Windows NT https://www.cainiaoxueyuan.com/anquan/10.0; Win64; x64; rv:99.0) Gecko/20https://www.cainiaoxueyuan.com/anquan/100https://www.cainiaoxueyuan.com/anquan/10https://www.cainiaoxueyuan.com/anquan/1 Firefox/99.0
接受: */*
接受语言: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5 ,en-US;q=0.3,en;q=0.2
接受 - 编码:gzip、deflate
Sec-WebSocket-版本:https://www.cainiaoxueyuan.com/anquan/13
来源:http://https://www.cainiaoxueyuan.com/anquan/127.0.0.https://www.cainiaoxueyuan.com/anquan/1
Sec-WebSocket-Key:8PbhQOV5ykV3eYf2biw52A==
连接:保留,升级 Sec -获取 - 目的地. : websocket
Sec-Fetch-Mode: websocket
Sec-Fetch-Site: same-site
Pragma: no-cache
Cache-Control: no-cache
升级:websocket

​如果服务器接受连接,则会返回 WebSocket 响应

HTTP/https://www.cainiaoxueyuan.com/anquan/1.https://www.cainiaoxueyuan.com/anquan/1 https://www.cainiaoxueyuan.com/anquan/10https://www.cainiaoxueyuan.com/anquan/1 切换协议
升级:websocket
连接:升级 Sec-WebSocket - 接受:PO DBAGQ6OHhttps://www.cainiaoxueyuan.com/anquan/1NXVQD+sjrkfk9gnsgi =

将保持WebSocket网络连接的打开,并且每个页面都可以直接发送WebSocket消息:


版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

热门