HTTP请求
HTTP 是浏览器、App、接口客户端和服务器之间说话的格式。做 Web 安全时,先能看懂一条请求,后面看认证、越权、注入、文件上传才不会散。
一条请求里有什么
| 部分 | 作用 | 安全上看什么 |
|---|---|---|
| 请求行 | 方法、路径、协议版本 | 是否有隐藏路径、危险方法、敏感参数 |
| Header | 客户端、来源、身份、格式等上下文 | Cookie、Authorization、Referer、Origin、X-Forwarded-* |
| Body | POST/PUT 等请求提交的数据 | JSON、表单、文件、XML 是否被可信处理 |
| 响应码 | 服务器处理结果 | 200、302、401、403、404、500 的差异 |
| 响应体 | 页面或接口返回内容 | 错误信息、调试信息、数据越权、反射内容 |
常见方法里,GET 多用于读取,POST 多用于提交,PUT/PATCH 常用于修改,DELETE 常用于删除。方法本身不等于权限,真正的权限判断必须在服务端完成。
读包时的关注点
- 身份从哪里来:看
Cookie、Authorization、自定义 Token 和会话参数。 - 数据从哪里进:看 URL 参数、表单字段、JSON 字段、上传文件名、Header。
- 状态怎么变:看登录前后、不同角色、不同对象 ID 的返回差异。
- 服务端信什么:如果客户端能改价格、角色、状态、回调地址,就要警惕逻辑漏洞。
- 错误怎么回:详细报错、栈信息、SQL 错误、框架版本都可能暴露内部信息。
初学者速记
HTTP 请求不是“页面点一下”的表象,而是一份可观察、可比较、可复现的业务记录。安全测试里最常做的事,就是改一个变量,观察服务端是否仍然按规则处理。