diff --git a/index.html b/index.html index d13fd3ee..96849e0b 100644 --- a/index.html +++ b/index.html @@ -428,8 +428,72 @@

Processing model

received data, according to the requirements of [[RFC7230]]. If it is not possible to construct a complete HTTP request, the remote end must either close the connection, - return an HTTP response with status code 500, or return - an error with error code unknown error. + return an HTTP response with status code 500, or send an + error with error code unknown error, and then + jump to step 1. + +
  • If request has a Host header, + let host be the value of that header. Otherwise + let host be undefined.

  • + +
  • If request has an Origin header, + let origin be the value of that header. Otherwise + let origin be undefined.

  • + +
  • If request has an Content-Type header, + let content-type be the value of that header. Otherwise + let content-type be undefined.

  • + +
  • If any of the following conditions hold: +

    +

    Then send an error with error code unknown + error, and jump to step 1.

    + +

    Rejecting connections with unexpected values in the + Host header prevents DNS rebinding attacks. Implementations + can opt to provide more stringent controls where appropriate, for + example only accepting connections when the host value + corresponds to a loopback interface [[RFC5735]]. Further guidance + for implementors is given in the security + section.

    +
  • + +
  • If origin is not undefined and is not identical to + an Origin header value that the implementation has been + configured to allow, then stop running these steps and act as if the + requested service is not available.

    + +

    Rejecting connections with unexpected values in + the Origin header is necessary to prevent untrusted websites + from establishing a WebDriver session.

  • + +
  • If content-type is not undefined, and + ("content-type", content-type) is a + [=CORS-safelisted request-header=], or otherwise if the value + of content-type is not a Content-Type header the + implementation allows, then stop running these steps and act as if + the requested service is not available.

    + +

    This provides an additional layer of defence against + requests originating from untrusted websites. Implementations can + choose to implement this by only accepting requests with the + "application/json" Content-Type header.

  • Let request match be the result of the algorithm to match a request with request’s @@ -10433,18 +10497,18 @@

    Security

    and that WebDriver remains disabled in publicly consumed versions of the user agent. -

    To prevent arbitrary machines on the network - from connecting and creating sessions, - it is suggested that only connections from - loopback devices are allowed by default. - -

    The remote end can include - a configuration option to limit - the accepted IP range allowed to connect and make requests. - The default setting for this might be - to limit connections to the IPv4 localhost - CIDR range 127.0.0.0/8 - and the IPv6 localhost address ::1. [[RFC4632]] +

    To prevent arbitrary machines on the network from connecting and + creating sessions, it is suggested that only connections from + loopback devices are allowed by default. However, testing setups + commonly put the remote end and local end on different + network hosts. Users deploying such a setup are encouraged to + restrict access to the remote end to the greatest extent possible, + either by restricting network connections to trusted hosts (e.g. in + the case of a lab setting, or the remote end running in a containers + on the same bridged network), or by routing all connections through + an intermediary node that provides authorization and + authentication. Remote end implementors are encouraged to + provide minimal, opt-in, configuration to support these scenarios.

    It is also suggested that user agents make an effort to visually distinguish @@ -10958,6 +11022,21 @@

    Index

    it is supposed that the implementation supports the relevant subsets of [[RFC7230]], [[RFC7231]], [[RFC7232]], [[RFC7234]], and [[RFC7235]]. +

    The following terms are defined in the Web Origin Concept specification: [[RFC6454]] +

    + +

    The following terms are defined in the Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing specification: [[RFC7230]] +

    + +

    The following terms are defined in the Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content specification: [[RFC7231]] +

    +

    The following terms are defined in the Cookie specification: [[RFC6265]]