标准答案
- JSON、HTML、CSS、JavaScript、文本和部分结构化响应通常压缩率较高,在网络带宽受限或响应体较大时更容易降低传输延迟。
- 图片、视频、音频、压缩包和已压缩二进制格式再次压缩收益很小,反而增加 CPU、延迟和缓存变体。
- 小响应可能因压缩初始化和 CPU 消耗得不偿失,应按内容类型和最小体积设置阈值。
- 压缩会改变响应大小。若攻击者可在同一压缩响应中注入可控内容并观察长度,可能推测 Cookie、Token 等秘密的匹配信息。
- 对包含高敏感秘密的交叉站点可观察响应,应评估禁用压缩、分离秘密和攻击者输入、加入随机填充及其他应用层防护。
题目解析
压缩优化要看端到端成本:网络节省、CPU、网关、缓存 Vary、客户端解压和响应大小分布都影响最终体验。
安全风险不是“只要用了 gzip 就泄露”,而是秘密和攻击者可控内容在可观察压缩上下文中发生长度相关性。
常见误区
- 对所有内容类型强制压缩,包括已压缩媒体和极小响应。
- 只看带宽节省,不看服务端 CPU 和 P99 延迟。
- 把含敏感 Cookie 的动态页面和攻击者可控反射内容放进同一压缩响应却不评估风险。