基本介绍
HTTP请求走私是一种干扰网站处理从一个或多个用户接收的HTTP请求序列方式的技术,它允许攻击者绕过安全控制获得对敏感数据的未经授权的访问并直接危害其他应用程序用户,请求走私大多发生于前端服务器和后端服务器对客户端传入的数据理解不一致的情况,主要是因为HTTP规范提供了两种不同的方法来指定请求的结束位置,即Content-Length
和Transfer-Encoding
标头,请求走私主要与HTTP/1请求相关,但是支持HTTP/2的网站可能容易受到攻击,具体取决于其后端架构
协议特性
在HTTP 1.0之前的通信协议中客户端会在进行HTTP请求时与服务器端通过TCP三次握手建立连接,而且是每个请求/响应都需要建立一个新的TCP连接,而现如今的WEB网站页面是由多种资源文件组成的,我们在获取一个完整的页面内容时则需要对多种资源文件需要进行请求处理,例如:CSS文件、JS文件、图片文件等内容,在这样的应用场景下HTTP /1.1横空出世并引入了持久连接(Keep-Alive)和管道(Pipeline),允许在单个TCP连接上发送多个HTTP请求和响应,规避了HTTP服务器负载开销大的问题