WebSocket sql blind inject
web socket是什么
HTTP和WebSocket都使用了客户端、服务端通信进行连接的一种协议。
http
HTTP协议:HTTP是单向的,客户端发送请求,服务器发送响应。让我们举个例子,当用户向服务器发送请求时,该请求以HTTP或HTTPS的形式发送,服务器接收到请求后向客户端发送响应,每个请求都与相应的响应相关联,发送完响应后连接关闭,每次HTTP或HTTPS请求都会建立新的与服务器的连接,获取响应后连接会自动终止。
HTTP是一种无状态协议,运行在基于TCP的面向连接的协议之上,它使用三次握手方法来保证数据包传输的可靠性,并重新传输丢失的数据包。
HTTP可以在任何可靠的面向连接的协议上运行,如TCP、SCTP。当客户端向服务器发送HTTP请求时,客户端和服务器之间会建立一个TCP连接,获取响应后TCP连接会终止,每个HTTP请求都会打开一个单独的TCP连接到服务器,例如,如果客户端向服务器发送了10个请求,将会打开10个单独的TCP连接,并在获取响应/回退后关闭。
HTTP消息使用ASCII编码,每个HTTP请求消息由HTTP协议版本(HTTP/1.1、HTTP/2)、HTTP方法(GET/POST等)、HTTP头部(内容类型、内容长度)、主机信息等组成,以及包含实际传输到服务器的消息的正文。HTTP头部的大小通常在200字节到2KB之间,常见的HTTP头部大小为700-800字节。当Web应用程序在客户端使用更多的cookie和其他工具来扩展代理存储功能时,会减少HTTP头部的负载。
ws
WebSocket(网络套接字):WebSocket是一种双向的、全双工的协议,用于客户端和服务器之间的通信,与HTTP不同,它的URL以ws://或wss://开头。它是一种有状态的协议,也就是说,客户端和服务器之间的连接将保持活动状态,直到由任一方(客户端或服务器)终止。在任一方(客户端或服务器)关闭连接后,连接将从两端终止。
让我们以客户端和服务器之间的通信为例,客户端是一个Web浏览器,服务器是另一端。当客户端和服务器之间建立连接时,它们进行握手并决定创建一个新的连接,这个连接将保持活动状态,直到被任一方终止。在连接建立并保持活动状态时,通信将通过同一连接通道进行,直到连接被终止。
这就是在客户端和服务器进行握手后,决定保持活动的新连接,这个新连接被称为WebSocket的方式。一旦通信链路建立并打开连接,消息交换将以双向模式进行,直到客户端和服务器之间的连接持续存在。如果其中任何一方(客户端或服务器)断开连接或决定关闭连接,则连接将被双方关闭。套接字的工作方式与HTTP的工作方式略有不同,状态码101表示在WebSocket中切换协议。
WebSocket的应用场景
WebSocket可以在以下情况下使用:
实时Web应用程序:实时Web应用程序使用WebSocket在客户端端显示由后端服务器不断发送的数据。在WebSocket中,数据不断地通过已经打开的连接进行推送/传输,这就是为什么WebSocket更快并且改善了应用程序的性能。例如,在交易网站或比特币交易中,通过使用WebSocket通道,后端服务器不断地将价格波动和动态数据推送到客户端端以显示。
游戏应用程序:在游戏应用程序中,服务器持续接收数据,并且在不刷新UI的情况下,数据将立即在屏幕上生效,UI将自动刷新,而无需建立新连接,因此在游戏应用程序中非常有帮助。
聊天应用程序:聊天应用程序使用WebSocket仅一次建立连接,以在订阅者之间交换、发布和广播消息。它重用同一WebSocket连接来发送和接收消息,并进行一对一的消息传递。
不适合使用WebSocket的情况:如果我们只想获取旧数据,或者只需一次性获取数据以在应用程序中进行处理,我们应该使用HTTP协议而不是WebSocket。不需要频繁获取或仅获取一次的旧数据可以通过简单的HTTP请求查询,因此在这种情况下最好不要使用WebSocket。
注意:如果我们只加载数据一次,RESTful Web服务已足够从服务器获取数据。
WebSocket连接 | HTTP连接 |
---|---|
WebSocket是一种双向通信协议,可以通过重用已建立的连接通道将数据从客户端发送到服务器,或者从服务器发送到客户端。连接保持活动状态,直到被客户端或服务器终止。 | HTTP协议是一种单向协议,它在TCP协议之上工作,TCP是一种面向连接的传输层协议,我们可以使用HTTP请求方法创建连接,获取响应后HTTP连接关闭。 |
几乎所有实时应用程序(如交易、监控、通知)都使用WebSocket在单个通信通道上接收数据。 | 简单的RESTful应用程序使用无状态的HTTP协议。 |
所有频繁更新的应用程序都使用WebSocket,因为它比HTTP连接更快。 | 当我们不想保留连接一段时间或重用连接传输数据时,HTTP连接比WebSocket慢。 |