websocket

0x01 原因

在一次打靶过程中,用到了一个手段

利用xss去构造一个websocket连接发送给管理员,使得管理员访问时,触发脚本泄露管理员信息

0x02 引入

websocket是一种实时通信手段。

在此之前有传统通信:电子邮件、网页浏览等有延迟的通信

实时通信:通话、实时数据传输、不需要主动请求/刷新即可更新数据

实时通信的三种方式:

方式 实现 弊端
轮询 客户端定期发送请求 可能有多次无效请求、资源浪费
长轮询 (基于http)客户端发出请求,保持连接,直到新数据响应再关闭 解决了无效请求,但仍需频繁建立/关闭连接
Comet (基于http)客户端请求一次就保持长连接,之后的关闭由服务端控制。 对于服务器推送方式仍然是延长响应和其他推送技巧

Comet的实现方式除了长轮询,还有流方式:即往页面插入一个隐藏的iframe,利用其src属性在客户端与服务端之间创建一条连接,服务器向iframe传输数据,实时更新页面

0x03 websocket

对于Comet的那个弊端可能描述的不清晰。

先体现一下http的通信特点,它只实现客户端到服务端的单向通信,客户端作为主动请求的一方

优点

而websocket,实现双向通信(服务端可以主动发送请求)、降低延迟(连接建立即保持开放)、高效资源利用(连接只建立一次)

所以更适用于web上那种聊天啊、游戏等低延迟应用。

此外,js、c#、python、java都有相应库

为了保持长连接,它依赖于一个 心跳机制,就是它会定期发送一些心跳包(只用来维持状态,不发送数据)。因此,如果一段时间收不到,就说明连接断了

限制

不加密

古老浏览器用ajax或其他方式代替

保持长连接对服务器优化有要求,否则消耗资源

0x04 实现

  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2023-2025 是羽泪云诶
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信