跳到主要内容

7.5.1. Processing Invalid HTTP Field Names as Derived Component Names (将无效 HTTP 字段名作为派生组成部分名称处理)

7.5.1. Processing Invalid HTTP Field Names as Derived Component Names (将无效 HTTP 字段名作为派生组成部分名称处理)

HTTP 字段名定义不允许名称中任何位置使用 @ 字符. 因此, 由于所有派生组成部分名称以 @ 开头, 这些命名空间应完全分离. 然而, 某些 HTTP 实现对 HTTP 字段名中接受的字符不够严格. 在此类实现中, 发送者 (或攻击者) 可能注入以 @ 开头的头字段并使其传递到应用代码. 这些无效头字段可能用于覆盖部分派生消息内容并替换任意值, 为攻击者提供挂载签名碰撞 (第 7.3.1 节) 或其他功能替换攻击 (如在精心构造的 POST 请求上使用 GET 请求的签名) 的潜在位置.

为对抗此点, 选择消息组成部分值时, 若组成部分名称以 @ 开头, 必须作为派生组成部分处理, 不得作为 HTTP 字段处理. 仅当组成部分名称不以 @ 开头时才能从消息字段取值. 第 2.5 节讨论的算法提供安全的操作顺序.