第11章 Web的攻击技术

按输入输出、设计配置、会话管理和其他风险四类还原XSS、注入、遍历、强制浏览、CSRF、DoS等攻击机制

第11章 Web的攻击技术

本课程对应[日]上野宣《图解HTTP》,于均良译,人民邮电出版社/图灵教育,2014年4月首版,308页,双色印刷,ISBN 9787115351531;原书《HTTPの教科書》,ISBN 9784798126258。图灵官方资料标明出版日期为2014年4月22日、172张图解;正式目录为11章、202个节/小节节点。本页严格按该首版章次组织,不用后续规范替换原书语境。

学习目标

  • 能解释“第11章 Web的攻击技术”全部正式节点,并把概念定位到真实请求、响应或应用状态。
  • 能绘制客户端、中介、服务器之间的消息方向、主体边界和关键状态转移。
  • 能设计单变量实验,验证“每个漏洞都能写出不可信输入、解释器或信任边界、可观察后果、单变量复现和对应防线,而不是只背攻击名称”。
  • 能写出并提交包含原始报文、失败反例、恢复条件和版次边界的独立证据包。

机制总览

第11章 Web的攻击技术:机制路径

  1. 1

    从一条可证伪的HTTP交换开始

    先预测:只部署HTTPS或只过滤尖括号就宣称Web安全,会遗漏SQL/OS/首部解释器、授权检查、会话生命周期和资源耗尽。把预测写成“请求输入、线上消息、接收方状态、响应输出、最终副作用”五列,再运行实验。若结果与预测不同,先修正模型,不要只截取一个状态码证明自己。

  2. 2

    核心词汇与首版边界

    这些词汇按2014年首版语义使用。SPDY、HTTP/2.0、X-XSS-Protection、P3P等保留出版时状态;HTTP/2最终规范、HTTP/3、JWT、OAuth、SameSite等后续技术只能作为另行标注的现代补充,不改变本书目录分母。

  3. 3

    核心机制深读

    隐藏字段、禁用按钮、JavaScript校验和Referer都不能成为授权依据。攻击者可以直接构造方法、URI、首部、Cookie和主体;服务端必须重新做认证、对象级授权、类型范围校验与业务不变量检查。

先按顺序建立机制,再进入实验切换阶段并检查失效证据。

章级决策实验

第11章 Web的攻击技术:机制与证据

切换《第11章 Web的攻击技术》的三个关键教学阶段,先解释机制,再用运行与失败证据验证结论。

选择推理阶段

当前阶段 · 从一条可证伪的HTTP交换开始

先预测:只部署HTTPS或只过滤尖括号就宣称Web安全,会遗漏SQL/OS/首部解释器、授权检查、会话生命周期和资源耗尽。把预测写成“请求输入、线上消息、接收方状态、响应输出、最终副作用”五列,再运行实验。若结果与预测不同,先修正模型,不要只截取一个状态码证明自己。

可核验证据

保存「从一条可证伪的HTTP交换开始」的原始请求与响应报文,用 curl 和浏览器网络面板复现成功、重定向、缓存及拒绝路径,并核对状态码与首部。

学完《第11章 Web的攻击技术》后,应能从输入和前置条件推导状态变化,并用可重复的构建、运行或边界测试证明结果。

失效—证据矩阵

第11章 Web的攻击技术:失效与核验

从一条可证伪的HTTP交换开始

典型失效

若只背诵「从一条可证伪的HTTP交换开始」字段而不区分请求语义、缓存边界和安全上下文,代理或浏览器状态变化后会得到错误响应或泄露数据。

核验证据

保存「从一条可证伪的HTTP交换开始」的原始请求与响应报文,用 curl 和浏览器网络面板复现成功、重定向、缓存及拒绝路径,并核对状态码与首部。

核心词汇与首版边界

典型失效

若只背诵「核心词汇与首版边界」字段而不区分请求语义、缓存边界和安全上下文,代理或浏览器状态变化后会得到错误响应或泄露数据。

核验证据

保存「核心词汇与首版边界」的原始请求与响应报文,用 curl 和浏览器网络面板复现成功、重定向、缓存及拒绝路径,并核对状态码与首部。

核心机制深读

典型失效

若只背诵「核心机制深读」字段而不区分请求语义、缓存边界和安全上下文,代理或浏览器状态变化后会得到错误响应或泄露数据。

核验证据

保存「核心机制深读」的原始请求与响应报文,用 curl 和浏览器网络面板复现成功、重定向、缓存及拒绝路径,并核对状态码与首部。

每个判断都必须能落到观测、测试或产物,不能只凭代码表面推测。

从一条可证伪的HTTP交换开始

先预测:只部署HTTPS或只过滤尖括号就宣称Web安全,会遗漏SQL/OS/首部解释器、授权检查、会话生命周期和资源耗尽。把预测写成“请求输入、线上消息、接收方状态、响应输出、最终副作用”五列,再运行实验。若结果与预测不同,先修正模型,不要只截取一个状态码证明自己。

本章的主问题是:按输入输出、设计配置、会话管理和其他风险四类还原XSS、注入、遍历、强制浏览、CSRF、DoS等攻击机制。原书以图解建立直觉,本课程把图解升级为可操作轨迹:每个箭头必须注明方向、协议对象和完成点;每个安全结论必须附一条攻击或误配置反例。

验收不变量是:每个漏洞都能写出不可信输入、解释器或信任边界、可观察后果、单变量复现和对应防线,而不是只背攻击名称。浏览器页面“看起来正常”只能说明某个终点出现,不能单独证明DNS、连接、TLS、缓存、认证或授权中的哪一段正确。

核心词汇与首版边界

这些词汇按2014年首版语义使用。SPDY、HTTP/2.0、X-XSS-Protection、P3P等保留出版时状态;HTTP/2最终规范、HTTP/3、JWT、OAuth、SameSite等后续技术只能作为另行标注的现代补充,不改变本书目录分母。

核心机制深读

请求永远可以被客户端改写

隐藏字段、禁用按钮、JavaScript校验和Referer都不能成为授权依据。攻击者可以直接构造方法、URI、首部、Cookie和主体;服务端必须重新做认证、对象级授权、类型范围校验与业务不变量检查。

动手试:先写下预期请求、响应与状态变化,再捕获一次正常交换和一次只改一个变量的失败交换。比较状态码、首部、主体、缓存或会话状态,确认结论来自证据而非浏览器表象。

转义必须匹配输出上下文

HTML文本、HTML属性、URL、JavaScript字符串、SQL、Shell、HTTP首部和邮件首部是不同解释器。优先用参数化API和安全模板;在最终输出点按上下文编码,不能用一条替换规则覆盖所有语法。

设计与配置漏洞绕过正常入口

强制浏览直接访问未在导航显示的资源,错误消息泄露堆栈或查询,开放重定向把可信域变成跳板。修复依赖每次请求的服务端授权、最小化错误披露和目标地址白名单。

会话攻击针对身份连续性

劫持窃取既有Session ID,固定攻击迫使受害者登录到攻击者已知ID,CSRF利用浏览器自动携带Cookie。登录时轮换标识、全程HTTPS、Cookie安全属性、服务端失效和不可预测CSRF令牌共同形成防线。

其他漏洞需要不同资源边界

密码破解要限速、锁定与强凭据策略;点击劫持要限制框架嵌入;DoS要配额、超时、隔离和容量保护;后门程序必须通过供应链、完整性、最小权限与审计发现,不能只靠输入过滤。

原书目录核对清单

本页承担25个目录或复习节点,正文、图解、实验和题目必须能反向定位每一项:

  • 11.1 针对Web的攻击技术
  • 11.1.1 HTTP不具备必要的安全功能
  • 11.1.2 在客户端即可篡改请求
  • 11.1.3 针对Web应用的攻击模式
  • 11.2 因输出值转义不完全引发的安全漏洞
  • 11.2.1 跨站脚本攻击
  • 11.2.2 SQL注入攻击
  • 11.2.3 OS命令注入攻击
  • 11.2.4 HTTP首部注入攻击
  • 11.2.5 邮件首部注入攻击
  • 11.2.6 目录遍历攻击
  • 11.2.7 远程文件包含漏洞
  • 11.3 因设置或设计上的缺陷引发的安全漏洞
  • 11.3.1 强制浏览
  • 11.3.2 不正确的错误消息处理
  • 11.3.3 开放重定向
  • 11.4 因会话管理疏忽引发的安全漏洞
  • 11.4.1 会话劫持
  • 11.4.2 会话固定攻击
  • 11.4.3 跨站点请求伪造
  • 11.5 其他安全漏洞
  • 11.5.1 密码破解
  • 11.5.2 点击劫持
  • 11.5.3 DoS攻击
  • 11.5.4 后门程序
分步1 / 3

复原正常协议轨迹

固定URI、客户端、网络和服务端状态,标出请求行、首部、主体、中介与最终响应。

可复现实验

untrusted input -> parser/interpreter -> unintended command
              ^ validate, parameterize, context-encode
browser with session cookie --forged state-changing request--> target
defense: unpredictable request token + origin checks + safe cookie policy
resource request -> authenticate -> object authorization -> validate transition -> execute -> audit

独立证据门

第11章 Web的攻击技术 的最小证据包包含:首版目录节点、请求与响应原文、连接/中介方向、主体边界、缓存或会话状态、一个单变量失败、最终副作用、已知限制、恢复步骤、责任人与复核人。

练习

练习

问题 1:为什么“第11章 Web的攻击技术”必须固定2014年首版语境?

问题 2:怎样构造“只部署HTTPS或只过滤尖括号就宣称Web安全,会遗漏SQL/OS/首部解释器、授权检查、会话生命周期和资源耗尽”的最小反例?

问题 3:何时可以认为本页完成独立交接?

本章回顾

“第11章 Web的攻击技术”的核心是按输入输出、设计配置、会话管理和其他风险四类还原XSS、注入、遍历、强制浏览、CSRF、DoS等攻击机制。真正掌握不止是认出术语,而是能让一条请求在消息、连接、中介、表示、身份和攻击边界之间闭环,并用失败实验说明边界一旦被破坏会发生什么。

名词解释

本章出现的专业名词,用大白话再讲一遍。

跨站脚本

不可信数据未经上下文正确转义进入页面,使攻击者脚本在受害者源下执行。掌握标准是能在原始请求或响应中定位它,并构造一条最小反例。

SQL注入

输入改变SQL语法结构,使数据库执行开发者未预期的查询或命令。掌握标准是能在原始请求或响应中定位它,并构造一条最小反例。

目录遍历

利用路径规范化缺陷越出允许目录读取或写入其他文件。掌握标准是能在原始请求或响应中定位它,并构造一条最小反例。

会话劫持

攻击者取得有效Session ID并冒充受害者访问应用。掌握标准是能在原始请求或响应中定位它,并构造一条最小反例。

CSRF

诱导已登录浏览器携带自动凭据向目标站点发出非本人意愿请求。掌握标准是能在原始请求或响应中定位它,并构造一条最小反例。

← 上一页:第10章 构建Web内容的技术 · 下一页:2014年首版总复习与协议审计 →

原版目录概念补充核对

以下条目补齐官方目录中容易被示例主线掩盖的概念。它们不重复罗列目录,而是明确每项概念的机制、适用边界和验收证据。

11.1.1 HTTP不具备必要的安全功能:机制、边界与证据

第11章 Web的攻击技术中的11.1.1 HTTP不具备必要的安全功能涉及身份、机密性或输入信任边界,不能把“使用 HTTPS”或“已经登录”当作完整安全证明。应分别验证握手/证书、凭据传递、会话属性、授权拒绝和恶意输入,并检查敏感信息是否进入 URL、日志或可被脚本读取的存储。

11.1.2 在客户端即可篡改请求:机制、边界与证据

第11章 Web的攻击技术中的11.1.2 在客户端即可篡改请求要放进一次完整 HTTP 交换中判断:请求行与首部给出前置条件,状态码和响应首部说明处理结果,消息体承载表示。复核时保存原始报文并改变方法、资源状态或连接复用条件,确认客户端、代理与服务端对语义的解释一致。

11.1.3 针对Web应用的攻击模式:机制、边界与证据

第11章 Web的攻击技术中的11.1.3 针对Web应用的攻击模式涉及身份、机密性或输入信任边界,不能把“使用 HTTPS”或“已经登录”当作完整安全证明。应分别验证握手/证书、凭据传递、会话属性、授权拒绝和恶意输入,并检查敏感信息是否进入 URL、日志或可被脚本读取的存储。

11.2 因输出值转义不完全引发的安全漏洞:机制、边界与证据

第11章 Web的攻击技术中的11.2 因输出值转义不完全引发的安全漏洞涉及身份、机密性或输入信任边界,不能把“使用 HTTPS”或“已经登录”当作完整安全证明。应分别验证握手/证书、凭据传递、会话属性、授权拒绝和恶意输入,并检查敏感信息是否进入 URL、日志或可被脚本读取的存储。

11.2.1 跨站脚本攻击:机制、边界与证据

第11章 Web的攻击技术中的11.2.1 跨站脚本攻击涉及身份、机密性或输入信任边界,不能把“使用 HTTPS”或“已经登录”当作完整安全证明。应分别验证握手/证书、凭据传递、会话属性、授权拒绝和恶意输入,并检查敏感信息是否进入 URL、日志或可被脚本读取的存储。

11.2.2 SQL注入攻击:机制、边界与证据

第11章 Web的攻击技术中的11.2.2 SQL注入攻击涉及身份、机密性或输入信任边界,不能把“使用 HTTPS”或“已经登录”当作完整安全证明。应分别验证握手/证书、凭据传递、会话属性、授权拒绝和恶意输入,并检查敏感信息是否进入 URL、日志或可被脚本读取的存储。

11.2.3 OS命令注入攻击:机制、边界与证据

第11章 Web的攻击技术中的11.2.3 OS命令注入攻击涉及身份、机密性或输入信任边界,不能把“使用 HTTPS”或“已经登录”当作完整安全证明。应分别验证握手/证书、凭据传递、会话属性、授权拒绝和恶意输入,并检查敏感信息是否进入 URL、日志或可被脚本读取的存储。

11.2.4 HTTP首部注入攻击:机制、边界与证据

第11章 Web的攻击技术中的11.2.4 HTTP首部注入攻击会改变中间节点如何转发、缓存或变换表示;字段值必须与适用方向、缓存键和端到端/逐跳边界一起解释。可用两次可重复请求对照命中状态、报文首部与实际字节,避免只凭浏览器最终页面判断。

11.2.5 邮件首部注入攻击:机制、边界与证据

第11章 Web的攻击技术中的11.2.5 邮件首部注入攻击会改变中间节点如何转发、缓存或变换表示;字段值必须与适用方向、缓存键和端到端/逐跳边界一起解释。可用两次可重复请求对照命中状态、报文首部与实际字节,避免只凭浏览器最终页面判断。

11.2.6 目录遍历攻击:机制、边界与证据

第11章 Web的攻击技术中的11.2.6 目录遍历攻击涉及身份、机密性或输入信任边界,不能把“使用 HTTPS”或“已经登录”当作完整安全证明。应分别验证握手/证书、凭据传递、会话属性、授权拒绝和恶意输入,并检查敏感信息是否进入 URL、日志或可被脚本读取的存储。

11.2.7 远程文件包含漏洞:机制、边界与证据

第11章 Web的攻击技术中的11.2.7 远程文件包含漏洞描述 Web 组件之间的一项可观察契约。先写出发送方、接收方和中间节点各自保存的状态,再以一组成功报文和一组边界/拒绝报文核对字段、时序与最终表示,防止把实现习惯误认为协议保证。

11.3 因设置或设计上的缺陷引发的安全漏洞:机制、边界与证据

第11章 Web的攻击技术中的11.3 因设置或设计上的缺陷引发的安全漏洞涉及身份、机密性或输入信任边界,不能把“使用 HTTPS”或“已经登录”当作完整安全证明。应分别验证握手/证书、凭据传递、会话属性、授权拒绝和恶意输入,并检查敏感信息是否进入 URL、日志或可被脚本读取的存储。

11.3.1 强制浏览:机制、边界与证据

第11章 Web的攻击技术中的11.3.1 强制浏览描述 Web 组件之间的一项可观察契约。先写出发送方、接收方和中间节点各自保存的状态,再以一组成功报文和一组边界/拒绝报文核对字段、时序与最终表示,防止把实现习惯误认为协议保证。

11.3.2 不正确的错误消息处理:机制、边界与证据

第11章 Web的攻击技术中的11.3.2 不正确的错误消息处理描述 Web 组件之间的一项可观察契约。先写出发送方、接收方和中间节点各自保存的状态,再以一组成功报文和一组边界/拒绝报文核对字段、时序与最终表示,防止把实现习惯误认为协议保证。

11.3.3 开放重定向:机制、边界与证据

第11章 Web的攻击技术中的11.3.3 开放重定向描述 Web 组件之间的一项可观察契约。先写出发送方、接收方和中间节点各自保存的状态,再以一组成功报文和一组边界/拒绝报文核对字段、时序与最终表示,防止把实现习惯误认为协议保证。

11.4 因会话管理疏忽引发的安全漏洞:机制、边界与证据

第11章 Web的攻击技术中的11.4 因会话管理疏忽引发的安全漏洞涉及身份、机密性或输入信任边界,不能把“使用 HTTPS”或“已经登录”当作完整安全证明。应分别验证握手/证书、凭据传递、会话属性、授权拒绝和恶意输入,并检查敏感信息是否进入 URL、日志或可被脚本读取的存储。

11.4.1 会话劫持:机制、边界与证据

第11章 Web的攻击技术中的11.4.1 会话劫持涉及身份、机密性或输入信任边界,不能把“使用 HTTPS”或“已经登录”当作完整安全证明。应分别验证握手/证书、凭据传递、会话属性、授权拒绝和恶意输入,并检查敏感信息是否进入 URL、日志或可被脚本读取的存储。

11.4.2 会话固定攻击:机制、边界与证据

第11章 Web的攻击技术中的11.4.2 会话固定攻击涉及身份、机密性或输入信任边界,不能把“使用 HTTPS”或“已经登录”当作完整安全证明。应分别验证握手/证书、凭据传递、会话属性、授权拒绝和恶意输入,并检查敏感信息是否进入 URL、日志或可被脚本读取的存储。

11.4.3 跨站点请求伪造:机制、边界与证据

第11章 Web的攻击技术中的11.4.3 跨站点请求伪造要放进一次完整 HTTP 交换中判断:请求行与首部给出前置条件,状态码和响应首部说明处理结果,消息体承载表示。复核时保存原始报文并改变方法、资源状态或连接复用条件,确认客户端、代理与服务端对语义的解释一致。

11.5 其他安全漏洞:机制、边界与证据

第11章 Web的攻击技术中的11.5 其他安全漏洞涉及身份、机密性或输入信任边界,不能把“使用 HTTPS”或“已经登录”当作完整安全证明。应分别验证握手/证书、凭据传递、会话属性、授权拒绝和恶意输入,并检查敏感信息是否进入 URL、日志或可被脚本读取的存储。

11.5.1 密码破解:机制、边界与证据

第11章 Web的攻击技术中的11.5.1 密码破解描述 Web 组件之间的一项可观察契约。先写出发送方、接收方和中间节点各自保存的状态,再以一组成功报文和一组边界/拒绝报文核对字段、时序与最终表示,防止把实现习惯误认为协议保证。

11.5.2 点击劫持:机制、边界与证据

第11章 Web的攻击技术中的11.5.2 点击劫持描述 Web 组件之间的一项可观察契约。先写出发送方、接收方和中间节点各自保存的状态,再以一组成功报文和一组边界/拒绝报文核对字段、时序与最终表示,防止把实现习惯误认为协议保证。

11.5.3 DoS攻击:机制、边界与证据

第11章 Web的攻击技术中的11.5.3 DoS攻击涉及身份、机密性或输入信任边界,不能把“使用 HTTPS”或“已经登录”当作完整安全证明。应分别验证握手/证书、凭据传递、会话属性、授权拒绝和恶意输入,并检查敏感信息是否进入 URL、日志或可被脚本读取的存储。

11.5.4 后门程序:机制、边界与证据

第11章 Web的攻击技术中的11.5.4 后门程序描述 Web 组件之间的一项可观察契约。先写出发送方、接收方和中间节点各自保存的状态,再以一组成功报文和一组边界/拒绝报文核对字段、时序与最终表示,防止把实现习惯误认为协议保证。

资料与写作方式声明

本章以上野宣《图解HTTP》2014年4月首版权威目录界定学习范围,并结合正文列出的技术资料独立重写;不宣称复现原书正文,也不沿用原作表述。

原作版权归作者与出版社所有;本站原创教学结构与表述仅供学习交流。

讨论

评论区加载中…