HTTP/2 协议笔记
HPACK 压缩与安全攻击原理
C S
多路复用 头部压缩 流控机制
点击翻页开始阅读 ↓
重点!
现代Web
基础协议

多路复用
单一连接上并行传输多个请求/响应
头部压缩
HPACK算法减少头部传输大小
流控机制
接收方控制发送方数据窗口
HPACK 压缩核心
客户端与服务器共同维护一个动态表,存储已发送的头部字段。 后续通信只需用 1字节索引 引用即可, 服务器解码时将索引展开为完整头部内容。
客户端 完整头部 动态表 存储头部 索引引用 1字节索引 服务器
1

动态表工作原理演示
动态表 (Dynamic Table)
62 :method: GET ~30B
63 :authority: example.com ~25B
传输数据流:
核心机制
动态表就像一本共享字典。第一次发送需要传输完整内容, 后续只需发送索引号(如 0xBE),服务器即可展开为完整头部。 1字节索引 ↔ 4KB数据,压缩效率极高!
2

1插入大头部
→
2发送千个索引
→
3内存暴涨
攻击效果演示
0 MB
网络流量
0 KB
服务器内存
0 MB
放大比率
0:1
放大比率: 0:1
攻击核心
几KB网络流量 → 几MB服务器内存。实测放大比率高达 1357:1!
3

WINDOW_UPDATE 流控锁定
客户端 (攻击者)
初始窗口大小
0
数据流已锁定
WINDOW_UPDATE = 0
服务器 (受害者)
内存分配
0 MB
致命组合
内存放大攻击 + 窗口大小设为 0 = 内存永久锁定,造成严重资源耗尽!
4