Web 安全的一切都建立在 HTTP 之上。不理解协议,漏洞原理就只能是死记硬背。这篇带你吃透 HTTP 的核心结构。

一、一次请求长什么样

当你在浏览器输入网址按下回车,浏览器向服务器发送了一个 HTTP 请求:

GET /tutorial/http HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0
Cookie: session=abc123
Accept: text/html

它由三部分组成:

  1. 请求行:方法(GET)、路径(/tutorial/http)、协议版本
  2. 请求头:键值对形式的元信息(Host、Cookie、User-Agent 等)
  3. 请求体:GET 通常没有;POST 提交的表单数据放在这里

二、常见请求方法

方法 语义 安全注意点
GET 读取资源,参数在 URL 中 参数会留在日志/历史记录里,别传敏感信息
POST 提交数据,参数在请求体 不代表安全,一样需要校验
PUT / DELETE 修改 / 删除资源 必须有权限校验

一个常见误区:很多人以为 POST 比 GET「安全」,因为参数不在 URL 里。实际上两者都是明文传输,真正的安全靠的是 HTTPS + 服务端校验

三、响应与状态码

服务器返回的响应结构类似:

HTTP/1.1 200 OK
Content-Type: text/html
Set-Cookie: session=abc123; HttpOnly; Secure

<!DOCTYPE html>...

重点记住这几类状态码:

  • 200 成功、301/302 重定向、403 无权限、404 不存在、500 服务器错误
  • 渗透测试中,403404 的差异常被用来目录探测

四、HTTPS:给 HTTP 穿上铠甲

HTTP 是明文的,在公共 Wi-Fi 下任何人都可以嗅探你的流量。HTTPS = HTTP + TLS,提供三个保证:

  1. 加密:第三方无法读取内容
  2. 完整性:内容不会被篡改
  3. 身份认证:证书证明「你访问的确实是这个网站」

这也是为什么本站配置了 Let’s Encrypt 证书并强制 HTTP 跳转 HTTPS。

动手练习

F12 打开浏览器开发者工具,切到 网络(Network) 面板,刷新本页面:

  • 找到本文档的请求,查看它的请求头和响应头
  • 观察状态码、Content-TypeCache-Control
  • 对比 HTTP 和 HTTPS 站点,看看地址栏锁形标志的差异

理解了 HTTP,下一篇我们就可以正式进入 Web 安全的世界了。