@@ -428,8 +428,52 @@ <h3>Processing model</h3>
428428 received data, according to the requirements of [[RFC7230]]. If it
429429 is not possible to construct a complete < a > HTTP request</ a > ,
430430 the < a > remote end</ a > must either close the < a > connection</ a > ,
431- return an HTTP response with status code 500, or return
432- an < a > error</ a > with < a > error code</ a > < a > unknown error</ a > .
431+ return an HTTP response with status code 500, or < a > send an
432+ error</ a > with < a > error code</ a > < a > unknown error</ a > , and then
433+ jump to step 1.
434+
435+ < li > < p > < p > If < var > request</ var > has a < a > Host header</ a > ,
436+ let < var > host</ var > be the value of that header. Otherwise
437+ let < var > host</ var > be null.</ p > </ li >
438+
439+ < li > < p > < p > If < var > request</ var > has an < a > Origin header</ a > ,
440+ let < var > origin</ var > be the value of that header. Otherwise
441+ let < var > origin</ var > be null.</ p > </ li >
442+
443+ < li > < p > If any of the following conditions hold:
444+ < ul >
445+ < li > < p > < var > host</ var > doesn't match the < code > Host</ code >
446+ grammar [[RFC7230]]</ p > </ li >
447+ < li > < p > The result of < a > host parsing</ a > the < code > uri-host</ code >
448+ part of < var > host</ var > is not an < a > IP address</ a > ,
449+ a < a > domain</ a > identical to the
450+ < a > host</ a > of the HTTP server or to another < a > host</ a > the
451+ implementation has been configured to allow.</ p > </ li >
452+ < li > < p > The < code > port</ code > part of < var > host</ var > is present
453+ but doesn't match the port of the HTTP server.</ p > </ li >
454+ < li > < p > The < code > port</ code > part of < var > host</ var > is not
455+ present, and the port of the HTTP server doesn't match the
456+ default port for the request's scheme.</ p > </ li >
457+ < li > < p > implementation wants to reject
458+ connections with < var > host</ var > as the < a > Host header</ a > .</ li > </ p >
459+ </ ul >
460+ < p > Then < a > send an error</ a > with < a > error code</ a > < a > unknown
461+ error</ a > , and jump to step 1.</ p >
462+
463+ < p class =note > Rejecting connections with unexpected values in the
464+ < a > Host header</ a > prevents DNS rebinding attacks. Implementations can opt
465+ to provide more stringent controls where appropriate, for example
466+ only accepting connections when the < var > host</ var > value
467+ corresponds to a loopback interface [[RFC5735]].</ p > </ li >
468+
469+ < li > < p > If < var > origin</ var > is not null, and is not identical to an
470+ < a > Origin header</ a > value that the implementation has been
471+ configured to allow, then stop running these steps and act as if the
472+ requested service is not available.</ p >
473+
474+ < p class =note > Rejecting connections with unexpected values in
475+ the < a > Origin header</ a > is necessary to prevent untrusted websites
476+ from establishing a WebDriver session.</ p > </ li >
433477
434478 < li > < p > Let < var > request match</ var > be the result of the algorithm
435479 to < a > match a request</ a > with < var > request</ var > ’s
@@ -10958,6 +11002,16 @@ <h2>Index</h2>
1095811002 it is supposed that the implementation supports the relevant subsets of
1095911003 [[RFC7230]], [[RFC7231]], [[RFC7232]], [[RFC7234]], and [[RFC7235]].
1096011004
11005+ < dd > < p > The following terms are defined in the Web Origin Concept specification: [[RFC6454]]
11006+ < ul >
11007+ <!-- Origin header --> < li > < dfn > < a href ="https://datatracker.ietf.org/doc/html/rfc6454#section-7 "> Origin header</ a > </ dfn >
11008+ </ ul >
11009+
11010+ < dd > < p > The following terms are defined in the Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing specification: [[RFC7230]]
11011+ < ul >
11012+ <!-- Host header --> < li > < dfn > < a href ="https://datatracker.ietf.org/doc/html/rfc7230#section-5.4 "> Host header</ a > </ dfn >
11013+ </ ul >
11014+
1096111015 < dd > < p > The following terms are defined in the Cookie specification: [[RFC6265]]
1096211016 < ul >
1096311017 <!-- Compute cookie-string --> < li > < dfn > < a href =https://tools.ietf.org/html/rfc6265#section-5.4 > Compute < code > cookie-string</ code > </ a > </ dfn >
0 commit comments