Header Normalization

Header Normalization

Header normalization tests examine how servers transform malformed header names when they accept them rather than rejecting. A server that silently converts Content_Length to Content-Length creates a smuggling vector: an upstream proxy might pass the underscore form through without acting on it, while the back-end treats it as a real Content-Length.

How the Echo Endpoint Works

Each normalization test sends a POST /echo request with a valid Content-Length for body framing, plus an additional malformed header. The /echo endpoint reflects all received headers back in the response body, one per line:

Host: localhost:8080
Content-Length: 11
Content_Length: 99

Http11Probe then parses the echo response to determine what happened to the malformed header name.

Verdict Logic

Echo ResultVerdictMeaning
Standard header name with probe valueFailServer normalized the name (smuggling risk)
Original malformed name with probe valueWarnServer preserved the name (mild proxy-chain risk)
Neither foundPassServer dropped or rejected the header
400 / 4xx / 5xxPassServer rejected the request
Connection closedPassServer refused the connection

Tests

Scored

Unscored