On Mon, 10 Oct 2011 17:11:35 -0600, Alex Rousskov wrote:
On 10/10/2011 04:29 PM, Amos Jeffries wrote:
On Mon, 10 Oct 2011 08:39:00 -0600, Alex Rousskov wrote:
------------------------------------------------------------
revno: 11783
committer: Alex Rousskov <[email protected]>
branch nick: trunk
timestamp: Mon 2011-10-10 08:39:00 -0600
message:
Fixed typos in the host_verify_strict description.
Frankly, the description is likely to still make little sense to
uninitiated because we do not explain what is "Host vs IP
validation"
and what the "additional strict validation comparisons" are.
There was
an attempt to explain the latter, but I think it failed. Perhaps
there
are more typos that hide the intended meaning?
modified:
src/cf.data.pre
How about:
"
By default on intercept and tproxy traffic Squid verifies that the
What about 'off' setting? It is the default, but it is not exactly
the
opposite of 'on' in this case. Perhaps we should rephrase for
clarity.
'with' or 'for'.
"With intercept and tproxy traffic Squid verifies that the"
These are always tested. There is no off switch for the intercepted
traffic.
Regardless of this option setting, when dealing with intercept and
tproxy traffic, Squid always verifies [your paragraph below].
By default, and when set to 'off', no additional checks are
performed.
Okay.
destination IP address matches the Host: header domain or IP (called
'authority form URL'). The client will be presented with a 409
Conflict
error page and Squid logs a security warning if they do not match.
This part looks good to me. I would s/if they do not match/if there
is
no match/ because there were a few things "they" can potentially
refer
to, but this is very minor.
When set to ON, this option enables additional strict comparisons on
forward-proxy and reverse-proxy traffic passing through Squid.
It is not clear to me whether setting this option to ON enables
"additional comparisons", "comparisons on forward-proxy and
reverse-proxy traffic", or both.
Same thing. The textual only applies on the regular traffic types.
I'm not sure how to put that more precisely.
I do not know whether the description
below matches code, but it could be clarified like this:
When set to 'on', Squid will also verify forward-proxy and
reverse-proxy traffic. In addition to checking all traffic types,
Squid will also perform more checks. These extra tests involve ...
Again, I am not saying that the above is what Squid does. I am just
providing one possible interpretation of the current text.
These additional tests involve textual domain comparisons to
ensure that the client sends a consistent Host header for the
destination server mentioned in the URL.
Is there any way we can be more specific here than "consistent Host
header"? If I am getting a "409 Conflict error page" with
host_verify_strict on, this description will not help me to
understand
why. Can we explicitly list the extra or "strict" requirements that
we
are trying to enforce here?
RFC 2616 section 14.23 is what we are trying to enforce.
"
The Host field value MUST represent
the naming authority of the origin server or gateway given by the
original URL
"
My definition of "consistent" is that they point at the same machine(s)
equally specific (raw-IP) or fuzzy (FQDN).
We check:
* if a hostname, domain FQDN, or IP -> must be identical (case-less
comparison)
* scheme default port is optional in one or both
* scheme non-default port is required identical in both
So far the exceptions are (in this order):
* empty Host: header -> skips tests
* non-existent Host: header -> skips tests
* intercepted traffic -> does DNS vs Host comparisons only
* this option set to 'off' -> skip all URL-vs-Host tests
* CONNECT requests with missing port on Host: -> ignore the port test
Amos