http头部注入攻击
1.HTTP请求的组成部分
HTTP(HyperText Transfer Protocol)请求由 请求行(Request Line)、请求头(Headers)、空行(Blank Line)和请求体(Request Body) 组成。具体结构如下:
1. 请求行(Request Line)
请求行是HTTP请求的第一行,包含三个部分:
- 请求方法(HTTP Method):定义客户端希望执行的操作(如
GET
、POST
、PUT
、DELETE
等)。 - 请求目标(Request Target):通常是URL路径(如
/index.html
)或完整URL(如https://example.com/api/data
)。 - HTTP版本(HTTP Version):如
HTTP/1.1
或HTTP/2
。
示例:
GET /index.html HTTP/1.1
- GET:请求方法
- /index.html:请求目标(路径)
- HTTP/1.1:HTTP版本
2. 请求头(Headers)
请求头用于传递额外的信息,如浏览器信息、Cookie、内容类型等。每个头字段由 名称: 值
组成,多个头字段用换行符分隔。
常见请求头:
头字段 | 说明 |
---|---|
Host | 目标服务器域名(必需) |
User-Agent | 客户端信息(浏览器/爬虫) |
Accept | 客户端可接受的响应类型(如 text/html ) |
Content-Type | 请求体的数据类型(如 application/json ) |
Cookie | 存储会话信息 |
Authorization | 认证信息(如 Bearer token ) |
示例:
Host: example.com
User-Agent: Mozilla/5.0
Accept: text/html,application/xhtml+xml
Cookie: sessionid=abc123
3. 空行(Blank Line)
请求头和请求体之间必须有一个空行(\r\n
),用于分隔头部和正文。
示例:
GET /index.html HTTP/1.1
Host: example.com
User-Agent: Mozilla/5.0
(空行)
4. 请求体(Request Body)
仅在某些请求方法(如 POST
、PUT
)中包含,用于发送数据(如表单数据、JSON、文件等)。
常见格式:
- 表单