什么是http响应截断
概念
http响应截断是由于应用程序未对用户提交的数据进行严格过滤,因此当用户恶意提交包含CR(回车,即URL编码%0d或\r)和LF(换行符,即URL编码%0a或\n)的http请求,且请求数据包含在发送给web用户的http响应标头中时,服务器可能会创建两个http响应,攻击者可以控制第2个响应并加以攻击。攻击者还可以控制响应的内容,构造XSS攻击,其中的响应内容包含恶意的JavaScript或其他代码,并在用户的浏览器中执行,也可能会让用户重定向到攻击者控制的WEB内容中或在用户的主机上执行恶意操作。
知识点
1、什么是CR LF
CRLF 是 CR 和 LF两个字符的拼接,它们分别代表“回车+换行”(\r\n),全称为 “Carriage Return/Line Feed”,十六进制编码分别为0x0d 和 0x0a,URL编码为 %0D 和 %0A 。CR 和 LF 组合在一起即 CRLF 命令,它表示键盘上的 “Enter” 键,许多应用程序和网络协议使用这些命令作为分隔符。
2、为什么会产生http响应截断
在 HTTP 协议中,HTTP header 之间是由一个 CRLF 字符序列分隔开的,HTTP Header 与 Body 是用两个 CRLF 分隔的,浏览器根据这两个 CRLF 来取出 HTTP 内容并显示出来。
如果http响应头中包含CRLF,则浏览器会识别后提前结束响应头。就会产生http响应截断。