7.5.1. 派生コンポーネント名としての無効な HTTP フィールド名の処理 (Processing Invalid HTTP Field Names as Derived Component Names)
7.5.1. 派生コンポーネント名としての無効な HTTP フィールド名の処理 (Processing Invalid HTTP Field Names as Derived Component Names)
HTTP フィールド名の定義では, 名前のどこにも @ 文字を用いることは許されない. したがって, すべての派生コンポーネント名が @ 文字で始まる以上, これらの名前空間は完全に分離されているべきである. しかし, 一部の HTTP 実装は HTTP フィールド名として受け入れる文字について十分に厳格でない. そのような実装では, 送信者 (または攻撃者) が @ で始まるヘッダフィールドを注入し, アプリケーションコードまで通過させることができる. これらの無効なヘッダフィールドは, 派生メッセージ内容の一部を上書きして任意の値に置き換えるために用いられ, 署名衝突 (Section 7.3.1) 攻撃や, 細工した POST リクエストに対して GET リクエストの署名を用いるなどの他の機能置換攻撃を仕掛ける余地になりうる.
これに対処するため, メッセージコンポーネントの値を選ぶ際に, コンポーネント名が @ で始まる場合は派生コンポーネントとして処理し, HTTP フィールドとしては決して処理してはならない. コンポーネント名が @ で始まらない場合にのみ, メッセージのフィールドから取り得る. Section 2.5 で論じるアルゴリズムは, 安全な処理順序を提供する.