<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.2.11 -->

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
]>

<?rfc toc="yes"?>
<?rfc tocindent="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>
<?rfc strict="yes"?>
<?rfc compact="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>

<rfc ipr="pre5378Trust200902" docName="draft-ietf-httpbis-rfc6265bis-03" category="std" obsoletes="6265">

  <front>
    <title>Cookies: HTTP State Management Mechanism</title>

    <author initials="A." surname="Barth" fullname="Adam Barth">
      <organization>Google, Inc</organization>
      <address>
        <uri>https://www.adambarth.com/</uri>
      </address>
    </author>
    <author initials="M." surname="West" fullname="Mike West">
      <organization>Google, Inc</organization>
      <address>
        <email>mkwst@google.com</email>
        <uri>https://mikewest.org/</uri>
      </address>
    </author>

    <date />

    <area>Applications and Real-Time</area>
    <workgroup>HTTP</workgroup>
    

    <abstract>


<t>This document defines the HTTP Cookie and Set-Cookie header fields. These
header fields can be used by HTTP servers to store state (called cookies) at
HTTP user agents, letting the servers maintain a stateful session over the
mostly stateless HTTP protocol. Although cookies have many historical
infelicities that degrade their security and privacy, the Cookie and Set-Cookie
header fields are widely used on the Internet. This document obsoletes RFC
6265.</t>



    </abstract>


    <note title="Note to Readers">


<t>Discussion of this draft takes place on the HTTP working group mailing list
(ietf-http-wg@w3.org), which is archived at <eref target="https://lists.w3.org/Archives/Public/ietf-http-wg/">https://lists.w3.org/Archives/Public/ietf-http-wg/</eref>.</t>

<t>Working Group information can be found at <eref target="http://httpwg.github.io/">http://httpwg.github.io/</eref>; source
code and issues list for this draft can be found at <eref target="https://github.com/httpwg/http-extensions/labels/6265bis">https://github.com/httpwg/http-extensions/labels/6265bis</eref>.</t>


    </note>


  </front>

  <middle>


<section anchor="introduction" title="Introduction">

<t>This document defines the HTTP Cookie and Set-Cookie header fields. Using
the Set-Cookie header field, an HTTP server can pass name/value pairs and
associated metadata (called cookies) to a user agent. When the user agent makes
subsequent requests to the server, the user agent uses the metadata and other
information to determine whether to return the name/value pairs in the Cookie
header.</t>

<t>Although simple on their surface, cookies have a number of complexities. For
example, the server indicates a scope for each cookie when sending it to the
user agent. The scope indicates the maximum amount of time in which the user
agent should return the cookie, the servers to which the user agent should
return the cookie, and the URI schemes for which the cookie is applicable.</t>

<t>For historical reasons, cookies contain a number of security and privacy
infelicities. For example, a server can indicate that a given cookie is
intended for “secure” connections, but the Secure attribute does not provide
integrity in the presence of an active network attacker. Similarly, cookies
for a given host are shared across all the ports on that host, even though the
usual “same-origin policy” used by web browsers isolates content retrieved via
different ports.</t>

<t>There are two audiences for this specification: developers of cookie-generating
servers and developers of cookie-consuming user agents.</t>

<t>To maximize interoperability with user agents, servers SHOULD limit themselves
to the well-behaved profile defined in <xref target="sane-profile"/> when generating cookies.</t>

<t>User agents MUST implement the more liberal processing rules defined in Section
5, in order to maximize interoperability with existing servers that do not
conform to the well-behaved profile defined in <xref target="sane-profile"/>.</t>

<t>This document specifies the syntax and semantics of these headers as they are
actually used on the Internet. In particular, this document does not create
new syntax or semantics beyond those in use today. The recommendations for
cookie generation provided in <xref target="sane-profile"/> represent a preferred subset of current
server behavior, and even the more liberal cookie processing algorithm provided
in <xref target="ua-requirements"/> does not recommend all of the syntactic and semantic variations in
use today. Where some existing software differs from the recommended protocol
in significant ways, the document contains a note explaining the difference.</t>

<t>This document obsoletes <xref target="RFC6265"/>.</t>

</section>
<section anchor="conventions" title="Conventions">

<section anchor="conformance-criteria" title="Conformance Criteria">

<t>The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”,
“SHOULD NOT”, “RECOMMENDED”, “MAY”, and “OPTIONAL” in this document are to be
interpreted as described in <xref target="RFC2119"/>.</t>

<t>Requirements phrased in the imperative as part of algorithms (such as “strip any
leading space characters” or “return false and abort these steps”) are to be
interpreted with the meaning of the key word (“MUST”, “SHOULD”, “MAY”, etc.)
used in introducing the algorithm.</t>

<t>Conformance requirements phrased as algorithms or specific steps can be
implemented in any manner, so long as the end result is equivalent. In
particular, the algorithms defined in this specification are intended to be
easy to understand and are not intended to be performant.</t>

</section>
<section anchor="syntax-notation" title="Syntax Notation">

<t>This specification uses the Augmented Backus-Naur Form (ABNF) notation of
<xref target="RFC5234"/>.</t>

<t>The following core rules are included by reference, as defined in <xref target="RFC5234"/>,
Appendix B.1: ALPHA (letters), CR (carriage return), CRLF (CR LF), CTLs
(controls), DIGIT (decimal 0-9), DQUOTE (double quote), HEXDIG
(hexadecimal 0-9/A-F/a-f), LF (line feed), NUL (null octet), OCTET (any
8-bit sequence of data except NUL), SP (space), HTAB (horizontal tab),
CHAR (any <xref target="USASCII"/> character), VCHAR (any visible <xref target="USASCII"/> character),
and WSP (whitespace).</t>

<t>The OWS (optional whitespace) rule is used where zero or more linear
whitespace characters MAY appear:</t>

<figure><artwork type="abnf"><![CDATA[
OWS            = *( [ obs-fold ] WSP )
                 ; "optional" whitespace
obs-fold       = CRLF
]]></artwork></figure>

<t>OWS SHOULD either not be produced or be produced as a single SP character.</t>

</section>
<section anchor="terminology" title="Terminology">

<t>The terms “user agent”, “client”, “server”, “proxy”, and “origin server” have
the same meaning as in the HTTP/1.1 specification (<xref target="RFC7230"/>, Section 2).</t>

<t>The request-host is the name of the host, as known by the user agent, to which
the user agent is sending an HTTP request or from which it is receiving an HTTP
response (i.e., the name of the host to which it sent the corresponding HTTP
request).</t>

<t>The term request-uri refers to “request-target” as defined in Section 5.3 of <xref target="RFC7230"/>.</t>

<t>Two sequences of octets are said to case-insensitively match each other if and
only if they are equivalent under the i;ascii-casemap collation defined in
<xref target="RFC4790"/>.</t>

<t>The term string means a sequence of non-NUL octets.</t>

<t>The terms “active document”, “ancestor browsing context”, “browsing context”,
“dedicated worker”, “Document”, “WorkerGlobalScope”, “sandboxed origin browsing
context flag”, “parent browsing context”, “shared worker”, “the worker’s
Documents”, “nested browsing context”, and “top-level browsing context” are
defined in <xref target="HTML"/>.</t>

<t>“Service Workers” are defined in the Service Workers specification
<xref target="SERVICE-WORKERS"/>.</t>

<t>The term “origin”, the mechanism of deriving an origin from a URI, and the “the
same” matching algorithm for origins are defined in <xref target="RFC6454"/>.</t>

<t>“Safe” HTTP methods include <spanx style="verb">GET</spanx>, <spanx style="verb">HEAD</spanx>, <spanx style="verb">OPTIONS</spanx>, and <spanx style="verb">TRACE</spanx>, as defined
in Section 4.2.1 of <xref target="RFC7231"/>.</t>

<t>The term “public suffix” is defined in a note in Section 5.3 of <xref target="RFC6265"/> as
“a domain that is controlled by a public registry”, and are also known as
“effective top-level domains” (eTLDs). For example, <spanx style="verb">example.com</spanx>’s public
suffix is <spanx style="verb">com</spanx>. User agents SHOULD use an up-to-date public suffix list,
such as the one maintained by Mozilla at <xref target="PSL"/>.</t>

<t>An origin’s “registered domain” is the origin’s host’s public suffix plus the
label to its left. That is, for <spanx style="verb">https://www.example.com</spanx>, the public suffix is
<spanx style="verb">com</spanx>, and the registered domain is <spanx style="verb">example.com</spanx>. This concept is defined more
rigorously in <xref target="PSL"/>, and is also known as “effective top-level domain plus one”
(eTLD+1).</t>

<t>The term “request”, as well as a request’s “client”, “current url”, “method”,
and “target browsing context”, are defined in <xref target="FETCH"/>.</t>

</section>
</section>
<section anchor="overview" title="Overview">

<t>This section outlines a way for an origin server to send state information to a
user agent and for the user agent to return the state information to the origin
server.</t>

<t>To store state, the origin server includes a Set-Cookie header in an HTTP
response. In subsequent requests, the user agent returns a Cookie request
header to the origin server. The Cookie header contains cookies the user agent
received in previous Set-Cookie headers. The origin server is free to ignore
the Cookie header or use its contents for an application-defined purpose.</t>

<t>Origin servers MAY send a Set-Cookie response header with any response. User
agents MAY ignore Set-Cookie headers contained in responses with 100-level
status codes but MUST process Set-Cookie headers contained in other responses
(including responses with 400- and 500-level status codes). An origin server
can include multiple Set-Cookie header fields in a single response. The
presence of a Cookie or a Set-Cookie header field does not preclude HTTP
caches from storing and reusing a response.</t>

<t>Origin servers SHOULD NOT fold multiple Set-Cookie header fields into a single
header field. The usual mechanism for folding HTTP headers fields (i.e., as
defined in Section 3.2.2 of <xref target="RFC7230"/>) might change the semantics of the Set-Cookie header
field because the %x2C (“,”) character is used by Set-Cookie in a way that
conflicts with such folding.</t>

<section anchor="examples" title="Examples">

<t>Using the Set-Cookie header, a server can send the user agent a short string
in an HTTP response that the user agent will return in future HTTP requests that
are within the scope of the cookie. For example, the server can send the user
agent a “session identifier” named SID with the value 31d4d96e407aad42. The
user agent then returns the session identifier in subsequent requests.</t>

<figure><artwork><![CDATA[
== Server -> User Agent ==

Set-Cookie: SID=31d4d96e407aad42

== User Agent -> Server ==

Cookie: SID=31d4d96e407aad42
]]></artwork></figure>

<t>The server can alter the default scope of the cookie using the Path and
Domain attributes. For example, the server can instruct the user agent to
return the cookie to every path and every subdomain of example.com.</t>

<figure><artwork><![CDATA[
== Server -> User Agent ==

Set-Cookie: SID=31d4d96e407aad42; Path=/; Domain=example.com

== User Agent -> Server ==

Cookie: SID=31d4d96e407aad42
]]></artwork></figure>

<t>As shown in the next example, the server can store multiple cookies at the user
agent. For example, the server can store a session identifier as well as the
user’s preferred language by returning two Set-Cookie header fields. Notice
that the server uses the Secure and HttpOnly attributes to provide
additional security protections for the more sensitive session identifier (see
<xref target="sane-set-cookie-semantics"/>).</t>

<figure><artwork><![CDATA[
== Server -> User Agent ==

Set-Cookie: SID=31d4d96e407aad42; Path=/; Secure; HttpOnly
Set-Cookie: lang=en-US; Path=/; Domain=example.com

== User Agent -> Server ==

Cookie: SID=31d4d96e407aad42; lang=en-US
]]></artwork></figure>

<t>Notice that the Cookie header above contains two cookies, one named SID and
one named lang. If the server wishes the user agent to persist the cookie over
multiple “sessions” (e.g., user agent restarts), the server can specify an
expiration date in the Expires attribute. Note that the user agent might
delete the cookie before the expiration date if the user agent’s cookie store
exceeds its quota or if the user manually deletes the server’s cookie.</t>

<figure><artwork><![CDATA[
== Server -> User Agent ==

Set-Cookie: lang=en-US; Expires=Wed, 09 Jun 2021 10:18:14 GMT

== User Agent -> Server ==

Cookie: SID=31d4d96e407aad42; lang=en-US
]]></artwork></figure>

<t>Finally, to remove a cookie, the server returns a Set-Cookie header with an
expiration date in the past. The server will be successful in removing the
cookie only if the Path and the Domain attribute in the Set-Cookie header
match the values used when the cookie was created.</t>

<figure><artwork><![CDATA[
== Server -> User Agent ==

Set-Cookie: lang=; Expires=Sun, 06 Nov 1994 08:49:37 GMT

== User Agent -> Server ==

Cookie: SID=31d4d96e407aad42
]]></artwork></figure>

</section>
</section>
<section anchor="sane-profile" title="Server Requirements">

<t>This section describes the syntax and semantics of a well-behaved profile of the
Cookie and Set-Cookie headers.</t>

<section anchor="sane-set-cookie" title="Set-Cookie">

<t>The Set-Cookie HTTP response header is used to send cookies from the server to
the user agent.</t>

<section anchor="syntax" title="Syntax">

<t>Informally, the Set-Cookie response header contains the header name
“Set-Cookie” followed by a “:” and a cookie. Each cookie begins with a
name-value-pair, followed by zero or more attribute-value pairs. Servers
SHOULD NOT send Set-Cookie headers that fail to conform to the following
grammar:</t>

<figure><artwork type="abnf"><![CDATA[
set-cookie-header = "Set-Cookie:" SP set-cookie-string
set-cookie-string = cookie-pair *( ";" SP cookie-av )
cookie-pair       = cookie-name "=" cookie-value
cookie-name       = token
cookie-value      = *cookie-octet / ( DQUOTE *cookie-octet DQUOTE )
cookie-octet      = %x21 / %x23-2B / %x2D-3A / %x3C-5B / %x5D-7E
                      ; US-ASCII characters excluding CTLs,
                      ; whitespace DQUOTE, comma, semicolon,
                      ; and backslash
token             = <token, defined in [RFC7230], Section 3.2.6>

cookie-av         = expires-av / max-age-av / domain-av /
                    path-av / secure-av / httponly-av /
                    samesite-av / extension-av
expires-av        = "Expires=" sane-cookie-date
sane-cookie-date  =
    <IMF-fixdate, defined in [RFC7231], Section 7.1.1.1>
max-age-av        = "Max-Age=" non-zero-digit *DIGIT
                      ; In practice, both expires-av and max-age-av
                      ; are limited to dates representable by the
                      ; user agent.
non-zero-digit    = %x31-39
                      ; digits 1 through 9
domain-av         = "Domain=" domain-value
domain-value      = <subdomain>
                      ; defined in [RFC1034], Section 3.5, as
                      ; enhanced by [RFC1123], Section 2.1
path-av           = "Path=" path-value
path-value        = *av-octet
secure-av         = "Secure"
httponly-av       = "HttpOnly"
samesite-av       = "SameSite=" samesite-value
samesite-value    = "Strict" / "Lax" / "None"
extension-av      = *av-octet
av-octet          = %x20-3A / %x3C-7E
                      ; any CHAR except CTLs or ";"
]]></artwork></figure>

<t>Note that some of the grammatical terms above reference documents that use
different grammatical notations than this document (which uses ABNF from
<xref target="RFC5234"/>).</t>

<t>The semantics of the cookie-value are not defined by this document.</t>

<t>To maximize compatibility with user agents, servers that wish to store arbitrary
data in a cookie-value SHOULD encode that data, for example, using Base64
<xref target="RFC4648"/>.</t>

<t>Per the grammar above, the cookie-value MAY be wrapped in DQUOTE characters.
Note that in this case, the initial and trailing DQUOTE characters are not
stripped. They are part of the cookie-value, and will be included in Cookie
headers sent to the server.</t>

<t>The portions of the set-cookie-string produced by the cookie-av term are
known as attributes. To maximize compatibility with user agents, servers SHOULD
NOT produce two attributes with the same name in the same set-cookie-string.
(See <xref target="storage-model"/> for how user agents handle this case.)</t>

<t>Servers SHOULD NOT include more than one Set-Cookie header field in the same
response with the same cookie-name. (See <xref target="set-cookie"/> for how user agents
handle this case.)</t>

<t>If a server sends multiple responses containing Set-Cookie headers
concurrently to the user agent (e.g., when communicating with the user agent
over multiple sockets), these responses create a “race condition” that can lead
to unpredictable behavior.</t>

<t>NOTE: Some existing user agents differ in their interpretation of two-digit
years. To avoid compatibility issues, servers SHOULD use the rfc1123-date
format, which requires a four-digit year.</t>

<t>NOTE: Some user agents store and process dates in cookies as 32-bit UNIX time_t
values. Implementation bugs in the libraries supporting time_t processing on
some systems might cause such user agents to process dates after the year 2038
incorrectly.</t>

</section>
<section anchor="sane-set-cookie-semantics" title="Semantics (Non-Normative)">

<t>This section describes simplified semantics of the Set-Cookie header. These
semantics are detailed enough to be useful for understanding the most common
uses of cookies by servers. The full semantics are described in <xref target="ua-requirements"/>.</t>

<t>When the user agent receives a Set-Cookie header, the user agent stores the
cookie together with its attributes. Subsequently, when the user agent makes
an HTTP request, the user agent includes the applicable, non-expired cookies
in the Cookie header.</t>

<t>If the user agent receives a new cookie with the same cookie-name,
domain-value, and path-value as a cookie that it has already stored, the
existing cookie is evicted and replaced with the new cookie. Notice that
servers can delete cookies by sending the user agent a new cookie with an
Expires attribute with a value in the past.</t>

<t>Unless the cookie’s attributes indicate otherwise, the cookie is returned only
to the origin server (and not, for example, to any subdomains), and it expires
at the end of the current session (as defined by the user agent). User agents
ignore unrecognized cookie attributes (but not the entire cookie).</t>

<section anchor="the-expires-attribute" title="The Expires Attribute">

<t>The Expires attribute indicates the maximum lifetime of the cookie,
represented as the date and time at which the cookie expires. The user agent is
not required to retain the cookie until the specified date has passed. In fact,
user agents often evict cookies due to memory pressure or privacy concerns.</t>

</section>
<section anchor="the-max-age-attribute" title="The Max-Age Attribute">

<t>The Max-Age attribute indicates the maximum lifetime of the cookie,
represented as the number of seconds until the cookie expires. The user agent is
not required to retain the cookie for the specified duration. In fact, user
agents often evict cookies due to memory pressure or privacy concerns.</t>

<t>NOTE: Some existing user agents do not support the Max-Age attribute. User
agents that do not support the Max-Age attribute ignore the attribute.</t>

<t>If a cookie has both the Max-Age and the Expires attribute, the Max-Age
attribute has precedence and controls the expiration date of the cookie. If a
cookie has neither the Max-Age nor the Expires attribute, the user agent
will retain the cookie until “the current session is over” (as defined by the
user agent).</t>

</section>
<section anchor="the-domain-attribute" title="The Domain Attribute">

<t>The Domain attribute specifies those hosts to which the cookie will be sent.
For example, if the value of the Domain attribute is “example.com”, the user
agent will include the cookie in the Cookie header when making HTTP requests to
example.com, www.example.com, and www.corp.example.com. (Note that a
leading %x2E (“.”), if present, is ignored even though that character is not
permitted, but a trailing %x2E (“.”), if present, will cause the user agent to
ignore the attribute.)  If the server omits the Domain attribute, the user
agent will return the cookie only to the origin server.</t>

<t>WARNING: Some existing user agents treat an absent Domain attribute as if the
Domain attribute were present and contained the current host name. For
example, if example.com returns a Set-Cookie header without a Domain
attribute, these user agents will erroneously send the cookie to
www.example.com as well.</t>

<t>The user agent will reject cookies unless the Domain attribute specifies a
scope for the cookie that would include the origin server. For example, the
user agent will accept a cookie with a Domain attribute of “example.com” or
of “foo.example.com” from foo.example.com, but the user agent will not accept
a cookie with a Domain attribute of “bar.example.com” or of
“baz.foo.example.com”.</t>

<t>NOTE: For security reasons, many user agents are configured to reject Domain
attributes that correspond to “public suffixes”. For example, some user
agents will reject Domain attributes of “com” or “co.uk”. (See <xref target="storage-model"/> for
more information.)</t>

</section>
<section anchor="the-path-attribute" title="The Path Attribute">

<t>The scope of each cookie is limited to a set of paths, controlled by the
Path attribute. If the server omits the Path attribute, the user agent will
use the “directory” of the request-uri’s path component as the default value.
(See <xref target="cookie-path"/> for more details.)</t>

<t>The user agent will include the cookie in an HTTP request only if the path
portion of the request-uri matches (or is a subdirectory of) the cookie’s
Path attribute, where the %x2F (“/”) character is interpreted as a directory
separator.</t>

<t>Although seemingly useful for isolating cookies between different paths within
a given host, the Path attribute cannot be relied upon for security (see
<xref target="security-considerations"/>).</t>

</section>
<section anchor="sane-secure" title="The Secure Attribute">

<t>The Secure attribute limits the scope of the cookie to “secure” channels
(where “secure” is defined by the user agent). When a cookie has the Secure
attribute, the user agent will include the cookie in an HTTP request only if
the request is transmitted over a secure channel (typically HTTP over Transport
Layer Security (TLS) <xref target="RFC2818"/>).</t>

<t>Although seemingly useful for protecting cookies from active network attackers,
the Secure attribute protects only the cookie’s confidentiality. An active
network attacker can overwrite Secure cookies from an insecure channel,
disrupting their integrity (see <xref target="weak-integrity"/> for more details).</t>

</section>
<section anchor="the-httponly-attribute" title="The HttpOnly Attribute">

<t>The HttpOnly attribute limits the scope of the cookie to HTTP requests. In
particular, the attribute instructs the user agent to omit the cookie when
providing access to cookies via “non-HTTP” APIs (such as a web browser API that
exposes cookies to scripts).</t>

<t>Note that the HttpOnly attribute is independent of the Secure attribute: a
cookie can have both the HttpOnly and the Secure attribute.</t>

</section>
<section anchor="the-samesite-attribute" title="The SameSite Attribute">

<t>The “SameSite” attribute limits the scope of the cookie such that it will only
be attached to requests if those requests are same-site, as defined by the
algorithm in <xref target="same-site-requests"/>. For example, requests for
<spanx style="verb">https://example.com/sekrit-image</spanx> will attach same-site cookies if and only if
initiated from a context whose “site for cookies” is “example.com”.</t>

<t>If the “SameSite” attribute’s value is “Strict”, the cookie will only be sent
along with “same-site” requests. If the value is “Lax”, the cookie will be sent
with same-site requests, and with “cross-site” top-level navigations, as
described in <xref target="strict-lax"/>. If the value is “None”, the cookie will be sent
with same-site and cross-site requests. If the “SameSite” attribute’s value is
something other than these three known keywords, the attribute’s value will be
treated as “None”.</t>

</section>
</section>
<section anchor="cookie-name-prefixes" title="Cookie Name Prefixes">

<t><xref target="weak-confidentiality"/> and <xref target="weak-integrity"/> of this document spell out some of the drawbacks of cookies’
historical implementation. In particular, it is impossible for a server to have
confidence that a given cookie was set with a particular set of attributes. In
order to provide such confidence in a backwards-compatible way, two common sets
of requirements can be inferred from the first few characters of the cookie’s
name.</t>

<t>The normative requirements for the prefixes described below are detailed in the
storage model algorithm defined in <xref target="storage-model"/>.</t>

<section anchor="the-secure-prefix" title="The “__Secure-“ Prefix">

<t>If a cookie’s name begins with a case-sensitive match for the string
<spanx style="verb">__Secure-</spanx>, then the cookie will have been set with a <spanx style="verb">Secure</spanx> attribute.</t>

<t>For example, the following <spanx style="verb">Set-Cookie</spanx> header would be rejected by a conformant
user agent, as it does not have a <spanx style="verb">Secure</spanx> attribute.</t>

<figure><artwork><![CDATA[
Set-Cookie: __Secure-SID=12345; Domain=example.com
]]></artwork></figure>

<t>Whereas the following <spanx style="verb">Set-Cookie</spanx> header would be accepted:</t>

<figure><artwork><![CDATA[
Set-Cookie: __Secure-SID=12345; Domain=example.com; Secure
]]></artwork></figure>

</section>
<section anchor="the-host-prefix" title="The “__Host-“ Prefix">

<t>If a cookie’s name begins with a case-sensitive match for the string
<spanx style="verb">__Host-</spanx>, then the cookie will have been set with a <spanx style="verb">Secure</spanx> attribute, a
<spanx style="verb">Path</spanx> attribute with a value of <spanx style="verb">/</spanx>, and no <spanx style="verb">Domain</spanx> attribute.</t>

<t>This combination yields a cookie that hews as closely as a cookie can to
treating the origin as a security boundary. The lack of a <spanx style="verb">Domain</spanx> attribute
ensures that the cookie’s <spanx style="verb">host-only-flag</spanx> is true, locking the cookie to a
particular host, rather than allowing it to span subdomains. Setting the <spanx style="verb">Path</spanx>
to <spanx style="verb">/</spanx> means that the cookie is effective for the entire host, and won’t be
overridden for specific paths. The <spanx style="verb">Secure</spanx> attribute ensures that the cookie
is unaltered by non-secure origins, and won’t span protocols.</t>

<t>Ports are the only piece of the origin model that <spanx style="verb">__Host-</spanx> cookies continue
to ignore.</t>

<t>For example, the following cookies would always be rejected:</t>

<figure><artwork><![CDATA[
Set-Cookie: __Host-SID=12345
Set-Cookie: __Host-SID=12345; Secure
Set-Cookie: __Host-SID=12345; Domain=example.com
Set-Cookie: __Host-SID=12345; Domain=example.com; Path=/
Set-Cookie: __Host-SID=12345; Secure; Domain=example.com; Path=/
]]></artwork></figure>

<t>While the would be accepted if set from a secure origin (e.g.
“https://example.com/”), and rejected otherwise:</t>

<figure><artwork><![CDATA[
Set-Cookie: __Host-SID=12345; Secure; Path=/
]]></artwork></figure>

</section>
</section>
</section>
<section anchor="sane-cookie" title="Cookie">

<section anchor="syntax-1" title="Syntax">

<t>The user agent sends stored cookies to the origin server in the Cookie header.
If the server conforms to the requirements in <xref target="sane-set-cookie"/> (and the user agent
conforms to the requirements in <xref target="ua-requirements"/>), the user agent will send a Cookie
header that conforms to the following grammar:</t>

<figure><artwork type="abnf"><![CDATA[
cookie-header = "Cookie:" OWS cookie-string OWS
cookie-string = cookie-pair *( ";" SP cookie-pair )
]]></artwork></figure>

</section>
<section anchor="semantics" title="Semantics">

<t>Each cookie-pair represents a cookie stored by the user agent. The
cookie-pair contains the cookie-name and cookie-value the user agent
received in the Set-Cookie header.</t>

<t>Notice that the cookie attributes are not returned. In particular, the server
cannot determine from the Cookie header alone when a cookie will expire, for
which hosts the cookie is valid, for which paths the cookie is valid, or
whether the cookie was set with the Secure or HttpOnly attributes.</t>

<t>The semantics of individual cookies in the Cookie header are not defined by
this document. Servers are expected to imbue these cookies with
application-specific semantics.</t>

<t>Although cookies are serialized linearly in the Cookie header, servers SHOULD
NOT rely upon the serialization order. In particular, if the Cookie header
contains two cookies with the same name (e.g., that were set with different
Path or Domain attributes), servers SHOULD NOT rely upon the order in which
these cookies appear in the header.</t>

</section>
</section>
</section>
<section anchor="ua-requirements" title="User Agent Requirements">

<t>This section specifies the Cookie and Set-Cookie headers in sufficient
detail that a user agent implementing these requirements precisely can
interoperate with existing servers (even those that do not conform to the
well-behaved profile described in <xref target="sane-profile"/>).</t>

<t>A user agent could enforce more restrictions than those specified herein (e.g.,
for the sake of improved security); however, experiments have shown that such
strictness reduces the likelihood that a user agent will be able to interoperate
with existing servers.</t>

<section anchor="subcomponent-algorithms" title="Subcomponent Algorithms">

<t>This section defines some algorithms used by user agents to process specific
subcomponents of the Cookie and Set-Cookie headers.</t>

<section anchor="cookie-date" title="Dates">

<t>The user agent MUST use an algorithm equivalent to the following algorithm to
parse a cookie-date. Note that the various boolean flags defined as a part
of the algorithm (i.e., found-time, found-day-of-month, found-month,
found-year) are initially “not set”.</t>

<t><list style="numbers">
  <t>Using the grammar below, divide the cookie-date into date-tokens.  <vspace blankLines='1'/>
    <figure><artwork type="abnf"><![CDATA[
cookie-date     = *delimiter date-token-list *delimiter
date-token-list = date-token *( 1*delimiter date-token )
date-token      = 1*non-delimiter

delimiter       = %x09 / %x20-2F / %x3B-40 / %x5B-60 / %x7B-7E
non-delimiter   = %x00-08 / %x0A-1F / DIGIT / ":" / ALPHA / %x7F-FF
non-digit       = %x00-2F / %x3A-FF

day-of-month    = 1*2DIGIT [ non-digit *OCTET ]
month           = ( "jan" / "feb" / "mar" / "apr" /
                    "may" / "jun" / "jul" / "aug" /
                    "sep" / "oct" / "nov" / "dec" ) *OCTET
year            = 2*4DIGIT [ non-digit *OCTET ]
time            = hms-time [ non-digit *OCTET ]
hms-time        = time-field ":" time-field ":" time-field
time-field      = 1*2DIGIT
]]></artwork></figure>
  </t>
  <t>Process each date-token sequentially in the order the date-tokens
appear in the cookie-date:  <list style="numbers">
      <t>If the found-time flag is not set and the token matches the
 time production, set the found-time flag and set the hour-value,
 minute-value, and second-value to the numbers denoted by the digits
 in the date-token, respectively. Skip the remaining sub-steps and
 continue to the next date-token.</t>
      <t>If the found-day-of-month flag is not set and the date-token matches
 the day-of-month production, set the found-day-of-month flag and set
 the day-of-month-value to the number denoted by the date-token. Skip
 the remaining sub-steps and continue to the next date-token.</t>
      <t>If the found-month flag is not set and the date-token matches the
 month production, set the found-month flag and set the month-value
 to the month denoted by the date-token. Skip the remaining sub-steps
 and continue to the next date-token.</t>
      <t>If the found-year flag is not set and the date-token matches the
 year production, set the found-year flag and set the year-value to
 the number denoted by the date-token. Skip the remaining sub-steps
 and continue to the next date-token.</t>
    </list></t>
  <t>If the year-value is greater than or equal to 70 and less than or equal to
99, increment the year-value by 1900.</t>
  <t>If the year-value is greater than or equal to 0 and less than or equal to
69, increment the year-value by 2000.  <list style="numbers">
      <t>NOTE: Some existing user agents interpret two-digit years differently.</t>
    </list></t>
  <t>Abort these steps and fail to parse the cookie-date if:  <list style="symbols">
      <t>at least one of the found-day-of-month, found-month, found-year, or
found-time flags is not set,</t>
      <t>the day-of-month-value is less than 1 or greater than 31,</t>
      <t>the year-value is less than 1601,</t>
      <t>the hour-value is greater than 23,</t>
      <t>the minute-value is greater than 59, or</t>
      <t>the second-value is greater than 59.</t>
    </list>
(Note that leap seconds cannot be represented in this syntax.)</t>
  <t>Let the parsed-cookie-date be the date whose day-of-month, month,
year, hour, minute, and second (in UTC) are the
day-of-month-value, the month-value, the year-value, the hour-value,
the minute-value, and the second-value, respectively. If no such date
exists, abort these steps and fail to parse the cookie-date.</t>
  <t>Return the parsed-cookie-date as the result of this algorithm.</t>
</list></t>

</section>
<section anchor="canonicalized-host-names" title="Canonicalized Host Names">

<t>A canonicalized host name is the string generated by the following algorithm:</t>

<t><list style="numbers">
  <t>Convert the host name to a sequence of individual domain name labels.</t>
  <t>Convert each label that is not a Non-Reserved LDH (NR-LDH) label, to an
A-label (see Section 2.3.2.1 of <xref target="RFC5890"/> for the former and latter), or
to a “punycode label” (a label resulting from the “ToASCII” conversion in
Section 4 of <xref target="RFC3490"/>), as appropriate (see <xref target="idna-migration"/> of this
specification).</t>
  <t>Concatenate the resulting labels, separated by a %x2E (“.”) character.</t>
</list></t>

</section>
<section anchor="domain-matching" title="Domain Matching">

<t>A string domain-matches a given domain string if at least one of the following
conditions hold:</t>

<t><list style="symbols">
  <t>The domain string and the string are identical. (Note that both the domain
string and the string will have been canonicalized to lower case at this
point.)</t>
  <t>All of the following conditions hold:  <list style="symbols">
      <t>The domain string is a suffix of the string.</t>
      <t>The last character of the string that is not included in the domain
string is a %x2E (“.”) character.</t>
      <t>The string is a host name (i.e., not an IP address).</t>
    </list></t>
</list></t>

</section>
<section anchor="cookie-path" title="Paths and Path-Match">

<t>The user agent MUST use an algorithm equivalent to the following algorithm to
compute the default-path of a cookie:</t>

<t><list style="numbers">
  <t>Let uri-path be the path portion of the request-uri if such a portion
exists (and empty otherwise). For example, if the request-uri contains
just a path (and optional query string), then the uri-path is that path
(without the %x3F (“?”) character or query string), and if the request-uri
contains a full absoluteURI, the uri-path is the path component of
that URI.</t>
  <t>If the uri-path is empty or if the first character of the uri-path is
not a %x2F (“/”) character, output %x2F (“/”) and skip the remaining steps.</t>
  <t>If the uri-path contains no more than one %x2F (“/”) character, output
%x2F (“/”) and skip the remaining step.</t>
  <t>Output the characters of the uri-path from the first character up to, but
not including, the right-most %x2F (“/”).</t>
</list></t>

<t>A request-path path-matches a given cookie-path if at least one of the
following conditions holds:</t>

<t><list style="symbols">
  <t>The cookie-path and the request-path are identical.  <vspace blankLines='1'/>
Note that this differs from the rules in <xref target="RFC3986"/> for equivalence of the
path component, and hence two equivalent paths can have different cookies.</t>
  <t>The cookie-path is a prefix of the request-path, and the last character
of the cookie-path is %x2F (“/”).</t>
  <t>The cookie-path is a prefix of the request-path, and the first character
of the request-path that is not included in the cookie-path is a %x2F
(“/”) character.</t>
</list></t>

</section>
</section>
<section anchor="same-site-requests" title="“Same-site” and “cross-site” Requests">

<t>A request is “same-site” if its target’s URI’s origin’s registered domain
is an exact match for the request’s client’s “site for cookies”, or if the
request has no client. The request is otherwise “cross-site”.</t>

<t>For a given request (“request”), the following algorithm returns <spanx style="verb">same-site</spanx> or
<spanx style="verb">cross-site</spanx>:</t>

<t><list style="numbers">
  <t>If <spanx style="verb">request</spanx>’s client is <spanx style="verb">null</spanx>, return <spanx style="verb">same-site</spanx>.  <vspace blankLines='1'/>
Note that this is the case for navigation triggered by the user directly
(e.g. by typing directly into a user agent’s address bar).</t>
  <t>Let <spanx style="verb">site</spanx> be <spanx style="verb">request</spanx>’s client’s “site for cookies” (as defined in the
following sections).</t>
  <t>Let <spanx style="verb">target</spanx> be the registered domain of <spanx style="verb">request</spanx>’s current url.</t>
  <t>If <spanx style="verb">site</spanx> is an exact match for <spanx style="verb">target</spanx>, return <spanx style="verb">same-site</spanx>.</t>
  <t>Return <spanx style="verb">cross-site</spanx>.</t>
</list></t>

<t>The request’s client’s “site for cookies” is calculated depending upon its
client’s type, as described in the following subsections:</t>

<section anchor="document-requests" title="Document-based requests">

<t>The URI displayed in a user agent’s address bar is the only security context
directly exposed to users, and therefore the only signal users can reasonably
rely upon to determine whether or not they trust a particular website. The
registered domain of that URI’s origin represents the context in which a user
most likely believes themselves to be interacting. We’ll label this domain the
“top-level site”.</t>

<t>For a document displayed in a top-level browsing context, we can stop here: the
document’s “site for cookies” is the top-level site.</t>

<t>For documents which are displayed in nested browsing contexts, we need to audit
the origins of each of a document’s ancestor browsing contexts’ active documents
in order to account for the “multiple-nested scenarios” described in Section 4
of <xref target="RFC7034"/>. A document’s “site for cookies” is the top-level site if and
only if the document and each of its ancestor documents’ origins have the same
registered domain as the top-level site. Otherwise its “site for cookies” is
the empty string.</t>

<t>Given a Document (<spanx style="verb">document</spanx>), the following algorithm returns its “site for
cookies” (either a registered domain, or the empty string):</t>

<t><list style="numbers">
  <t>Let <spanx style="verb">top-document</spanx> be the active document in <spanx style="verb">document</spanx>’s browsing context’s
top-level browsing context.</t>
  <t>Let <spanx style="verb">top-origin</spanx> be the origin of <spanx style="verb">top-document</spanx>’s URI if <spanx style="verb">top-document</spanx>’s
sandboxed origin browsing context flag is set, and <spanx style="verb">top-document</spanx>’s origin
otherwise.</t>
  <t>Let <spanx style="verb">documents</spanx> be a list containing <spanx style="verb">document</spanx> and each of <spanx style="verb">document</spanx>’s
ancestor browsing contexts’ active documents.</t>
  <t>For each <spanx style="verb">item</spanx> in <spanx style="verb">documents</spanx>:  <list style="numbers">
      <t>Let <spanx style="verb">origin</spanx> be the origin of <spanx style="verb">item</spanx>’s URI if <spanx style="verb">item</spanx>’s sandboxed origin
browsing context flag is set, and <spanx style="verb">item</spanx>’s origin otherwise.</t>
      <t>If <spanx style="verb">origin</spanx>’s host’s registered domain is not an exact match for
<spanx style="verb">top-origin</spanx>’s host’s registered domain, return the empty string.</t>
    </list></t>
  <t>Return <spanx style="verb">top-origin</spanx>’s host’s registered domain.</t>
</list></t>

</section>
<section anchor="worker-requests" title="Worker-based requests">

<t>Worker-driven requests aren’t as clear-cut as document-driven requests, as
there isn’t a clear link between a top-level browsing context and a worker.
This is especially true for Service Workers <xref target="SERVICE-WORKERS"/>, which may
execute code in the background, without any document visible at all.</t>

<t>Note: The descriptions below assume that workers must be same-origin with
the documents that instantiate them. If this invariant changes, we’ll need to
take the worker’s script’s URI into account when determining their status.</t>

<section anchor="dedicated-and-shared-requests" title="Dedicated and Shared Workers">

<t>Dedicated workers are simple, as each dedicated worker is bound to one and only
one document. Requests generated from a dedicated worker (via <spanx style="verb">importScripts</spanx>,
<spanx style="verb">XMLHttpRequest</spanx>, <spanx style="verb">fetch()</spanx>, etc) define their “site for cookies” as that
document’s “site for cookies”.</t>

<t>Shared workers may be bound to multiple documents at once. As it is quite
possible for those documents to have distinct “site for cookie” values, the
worker’s “site for cookies” will be the empty string in cases where the values
diverge, and the shared value in cases where the values agree.</t>

<t>Given a WorkerGlobalScope (<spanx style="verb">worker</spanx>), the following algorithm returns its “site
for cookies” (either a registered domain, or the empty string):</t>

<t><list style="numbers">
  <t>Let <spanx style="verb">site</spanx> be <spanx style="verb">worker</spanx>’s origin’s host’s registered domain.</t>
  <t>For each <spanx style="verb">document</spanx> in <spanx style="verb">worker</spanx>’s Documents:  <list style="numbers">
      <t>Let <spanx style="verb">document-site</spanx> be <spanx style="verb">document</spanx>’s “site for cookies” (as defined
in <xref target="document-requests"/>).</t>
      <t>If <spanx style="verb">document-site</spanx> is not an exact match for <spanx style="verb">site</spanx>, return the empty
string.</t>
    </list></t>
  <t>Return <spanx style="verb">site</spanx>.</t>
</list></t>

</section>
<section anchor="service-workers" title="Service Workers">

<t>Service Workers are more complicated, as they act as a completely separate
execution context with only tangential relationship to the Document which
registered them.</t>

<t>Requests which simply pass through a Service Worker will be handled as described
above: the request’s client will be the Document or Worker which initiated the
request, and its “site for cookies” will be those defined in
<xref target="document-requests"/> and <xref target="dedicated-and-shared-requests"/></t>

<t>Requests which are initiated by the Service Worker itself (via a direct call to
<spanx style="verb">fetch()</spanx>, for instance), on the other hand, will have a client which is a
ServiceWorkerGlobalScope. Its “site for cookies” will be the registered domain
of the Service Worker’s URI.</t>

<t>Given a ServiceWorkerGlobalScope (<spanx style="verb">worker</spanx>), the following algorithm returns its
“site for cookies” (either a registered domain, or the empty string):</t>

<t><list style="numbers">
  <t>Return <spanx style="verb">worker</spanx>’s origin’s host’s registered domain.</t>
</list></t>

</section>
</section>
</section>
<section anchor="set-cookie" title="The Set-Cookie Header">

<t>When a user agent receives a Set-Cookie header field in an HTTP response, the
user agent MAY ignore the Set-Cookie header field in its entirety. For
example, the user agent might wish to block responses to “third-party” requests
from setting cookies (see <xref target="third-party-cookies"/>).</t>

<t>If the user agent does not ignore the Set-Cookie header field in its entirety,
the user agent MUST parse the field-value of the Set-Cookie header field as a
set-cookie-string (defined below).</t>

<t>NOTE: The algorithm below is more permissive than the grammar in <xref target="sane-set-cookie"/>.
For example, the algorithm strips leading and trailing whitespace from the
cookie name and value (but maintains internal whitespace), whereas the grammar
in <xref target="sane-set-cookie"/> forbids whitespace in these positions. User agents use this
algorithm so as to interoperate with servers that do not follow the
recommendations in <xref target="sane-profile"/>.</t>

<t>A user agent MUST use an algorithm equivalent to the following algorithm to
parse a set-cookie-string:</t>

<t><list style="numbers">
  <t>If the set-cookie-string contains a %x3B (“;”) character:  <list style="numbers">
      <t>The name-value-pair string consists of the characters up to, but not
including, the first %x3B (“;”), and the unparsed-attributes consist of
the remainder of the set-cookie-string (including the %x3B (“;”) in
question).</t>
    </list>
Otherwise:  <list style="numbers">
      <t>The name-value-pair string consists of all the characters contained in
the set-cookie-string, and the unparsed-attributes is the empty
string.</t>
    </list></t>
  <t>If the name-value-pair string lacks a %x3D (“=”) character, ignore the
set-cookie-string entirely.</t>
  <t>The (possibly empty) name string consists of the characters up to, but not
including, the first %x3D (“=”) character, and the (possibly empty) value
string consists of the characters after the first %x3D (“=”) character.</t>
  <t>Remove any leading or trailing WSP characters from the name string and the
value string.</t>
  <t>If the name string is empty, ignore the set-cookie-string entirely.</t>
  <t>The cookie-name is the name string, and the cookie-value is the value string.</t>
</list></t>

<t>The user agent MUST use an algorithm equivalent to the following algorithm to
parse the unparsed-attributes:</t>

<t><list style="numbers">
  <t>If the unparsed-attributes string is empty, skip the rest of these steps.</t>
  <t>Discard the first character of the unparsed-attributes (which will be a
%x3B (“;”) character).</t>
  <t>If the remaining unparsed-attributes contains a %x3B (“;”) character:  <list style="numbers">
      <t>Consume the characters of the unparsed-attributes up to, but not
including, the first %x3B (“;”) character.</t>
    </list>
Otherwise:  <list style="numbers">
      <t>Consume the remainder of the unparsed-attributes.</t>
    </list>
Let the cookie-av string be the characters consumed in this step.</t>
  <t>If the cookie-av string contains a %x3D (“=”) character:  <list style="numbers">
      <t>The (possibly empty) attribute-name string consists of the characters
up to, but not including, the first %x3D (“=”) character, and the
(possibly empty) attribute-value string consists of the characters
after the first %x3D (“=”) character.</t>
    </list>
Otherwise:  <list style="numbers">
      <t>The attribute-name string consists of the entire cookie-av string,
and the attribute-value string is empty.</t>
    </list></t>
  <t>Remove any leading or trailing WSP characters from the attribute-name
string and the attribute-value string.</t>
  <t>Process the attribute-name and attribute-value according to the
requirements in the following subsections. (Notice that attributes with
unrecognized attribute-names are ignored.)</t>
  <t>Return to Step 1 of this algorithm.</t>
</list></t>

<t>When the user agent finishes parsing the set-cookie-string, the user agent is
said to “receive a cookie” from the request-uri with name cookie-name,
value cookie-value, and attributes cookie-attribute-list. (See <xref target="storage-model"/>
for additional requirements triggered by receiving a cookie.)</t>

<section anchor="the-expires-attribute-1" title="The Expires Attribute">

<t>If the attribute-name case-insensitively matches the string “Expires”, the
user agent MUST process the cookie-av as follows.</t>

<t><list style="numbers">
  <t>Let the expiry-time be the result of parsing the attribute-value as
cookie-date (see <xref target="cookie-date"/>).</t>
  <t>If the attribute-value failed to parse as a cookie date, ignore the
cookie-av.</t>
  <t>If the expiry-time is later than the last date the user agent can
represent, the user agent MAY replace the expiry-time with the last
representable date.</t>
  <t>If the expiry-time is earlier than the earliest date the user agent can
represent, the user agent MAY replace the expiry-time with the earliest
representable date.</t>
  <t>Append an attribute to the cookie-attribute-list with an attribute-name
of Expires and an attribute-value of expiry-time.</t>
</list></t>

</section>
<section anchor="the-max-age-attribute-1" title="The Max-Age Attribute">

<t>If the attribute-name case-insensitively matches the string “Max-Age”, the
user agent MUST process the cookie-av as follows.</t>

<t><list style="numbers">
  <t>If the first character of the attribute-value is not a DIGIT or a “-“
character, ignore the cookie-av.</t>
  <t>If the remainder of attribute-value contains a non-DIGIT character, ignore
the cookie-av.</t>
  <t>Let delta-seconds be the attribute-value converted to an integer.</t>
  <t>If delta-seconds is less than or equal to zero (0), let expiry-time be
the earliest representable date and time. Otherwise, let the expiry-time
be the current date and time plus delta-seconds seconds.</t>
  <t>Append an attribute to the cookie-attribute-list with an attribute-name
of Max-Age and an attribute-value of expiry-time.</t>
</list></t>

</section>
<section anchor="the-domain-attribute-1" title="The Domain Attribute">

<t>If the attribute-name case-insensitively matches the string “Domain”, the user
agent MUST process the cookie-av as follows.</t>

<t><list style="numbers">
  <t>If the attribute-value is empty, the behavior is undefined. However, the
user agent SHOULD ignore the cookie-av entirely.</t>
  <t>If the first character of the attribute-value string is %x2E (“.”):  <list style="numbers">
      <t>Let cookie-domain be the attribute-value without the leading %x2E
(“.”) character.</t>
    </list>
Otherwise:  <list style="numbers">
      <t>Let cookie-domain be the entire attribute-value.</t>
    </list></t>
  <t>Convert the cookie-domain to lower case.</t>
  <t>Append an attribute to the cookie-attribute-list with an attribute-name
of Domain and an attribute-value of cookie-domain.</t>
</list></t>

</section>
<section anchor="the-path-attribute-1" title="The Path Attribute">

<t>If the attribute-name case-insensitively matches the string “Path”, the user
agent MUST process the cookie-av as follows.</t>

<t><list style="numbers">
  <t>If the attribute-value is empty or if the first character of the
attribute-value is not %x2F (“/”):  <list style="numbers">
      <t>Let cookie-path be the default-path.</t>
    </list>
Otherwise:  <list style="numbers">
      <t>Let cookie-path be the attribute-value.</t>
    </list></t>
  <t>Append an attribute to the cookie-attribute-list with an attribute-name
of Path and an attribute-value of cookie-path.</t>
</list></t>

</section>
<section anchor="the-secure-attribute" title="The Secure Attribute">

<t>If the attribute-name case-insensitively matches the string “Secure”, the
user agent MUST append an attribute to the cookie-attribute-list with an
attribute-name of Secure and an empty attribute-value.</t>

</section>
<section anchor="the-httponly-attribute-1" title="The HttpOnly Attribute">

<t>If the attribute-name case-insensitively matches the string “HttpOnly”, the
user agent MUST append an attribute to the cookie-attribute-list with an
attribute-name of HttpOnly and an empty attribute-value.</t>

</section>
<section anchor="the-samesite-attribute-1" title="The SameSite Attribute">

<t>If the attribute-name case-insensitively matches the string “SameSite”, the
user agent MUST process the cookie-av as follows:</t>

<t><list style="numbers">
  <t>Let <spanx style="verb">enforcement</spanx> be “None”.</t>
  <t>If cookie-av’s attribute-value is a case-insensitive match for “Strict”,
set <spanx style="verb">enforcement</spanx> to “Strict”.</t>
  <t>If cookie-av’s attribute-value is a case-insensitive match for “Lax”, set
<spanx style="verb">enforcement</spanx> to “Lax”.</t>
  <t>Append an attribute to the cookie-attribute-list with an attribute-name
of “SameSite” and an attribute-value of <spanx style="verb">enforcement</spanx>.</t>
</list></t>

<t>Note: This algorithm maps the “None” value, as well as any unknown value, to
the “None” behavior, which is helpful for backwards compatibility when
introducing new variants.</t>

<section anchor="strict-lax" title="“Strict” and “Lax” enforcement">

<t>Same-site cookies in “Strict” enforcement mode will not be sent along with
top-level navigations which are triggered from a cross-site document context.
As discussed in <xref target="top-level-navigations"/>, this might or might not be compatible
with existing session management systems. In the interests of providing a
drop-in mechanism that mitigates the risk of CSRF attacks, developers may set
the <spanx style="verb">SameSite</spanx> attribute in a “Lax” enforcement mode that carves out an
exception which sends same-site cookies along with cross-site requests if and
only if they are top-level navigations which use a “safe” (in the <xref target="RFC7231"/>
sense) HTTP method.</t>

<t>Lax enforcement provides reasonable defense in depth against CSRF attacks that
rely on unsafe HTTP methods (like <spanx style="verb">POST</spanx>), but does not offer a robust defense
against CSRF as a general category of attack:</t>

<t><list style="numbers">
  <t>Attackers can still pop up new windows or trigger top-level navigations in
order to create a “same-site” request (as described in section 2.1), which is
only a speedbump along the road to exploitation.</t>
  <t>Features like <spanx style="verb">&lt;link rel='prerender'&gt;</spanx> <xref target="prerendering"/> can be exploited
to create “same-site” requests without the risk of user detection.</t>
</list></t>

<t>When possible, developers should use a session management mechanism such as
that described in <xref target="top-level-navigations"/> to mitigate the risk of CSRF more
completely.</t>

</section>
</section>
</section>
<section anchor="storage-model" title="Storage Model">

<t>The user agent stores the following fields about each cookie: name, value,
expiry-time, domain, path, creation-time, last-access-time,
persistent-flag, host-only-flag, secure-only-flag, http-only-flag,
and same-site-flag.</t>

<t>When the user agent “receives a cookie” from a request-uri with name
cookie-name, value cookie-value, and attributes cookie-attribute-list, the
user agent MUST process the cookie as follows:</t>

<t><list style="numbers">
  <t>A user agent MAY ignore a received cookie in its entirety. For example, the
user agent might wish to block receiving cookies from “third-party”
responses or the user agent might not wish to store cookies that exceed some
size.</t>
  <t>Create a new cookie with name cookie-name, value cookie-value. Set the
creation-time and the last-access-time to the current date and time.</t>
  <t>If the cookie-attribute-list contains an attribute with an attribute-name
of “Max-Age”:  <list style="numbers">
      <t>Set the cookie’s persistent-flag to true.</t>
      <t>Set the cookie’s expiry-time to attribute-value of the last
attribute in the cookie-attribute-list with an attribute-name of
“Max-Age”.</t>
    </list>
Otherwise, if the cookie-attribute-list contains an attribute with an
attribute-name of “Expires” (and does not contain an attribute with an
attribute-name of “Max-Age”):  <list style="numbers">
      <t>Set the cookie’s persistent-flag to true.</t>
      <t>Set the cookie’s expiry-time to attribute-value of the last
attribute in the cookie-attribute-list with an attribute-name of
“Expires”.</t>
    </list>
Otherwise:  <list style="numbers">
      <t>Set the cookie’s persistent-flag to false.</t>
      <t>Set the cookie’s expiry-time to the latest representable date.</t>
    </list></t>
  <t>If the cookie-attribute-list contains an attribute with an
attribute-name of “Domain”:  <list style="numbers">
      <t>Let the domain-attribute be the attribute-value of the last
attribute in the cookie-attribute-list with an attribute-name of
“Domain”.</t>
    </list>
Otherwise:  <list style="numbers">
      <t>Let the domain-attribute be the empty string.</t>
    </list></t>
  <t>If the user agent is configured to reject “public suffixes” and the
domain-attribute is a public suffix:  <list style="numbers">
      <t>If the domain-attribute is identical to the canonicalized
request-host:      <list style="numbers">
          <t>Let the domain-attribute be the empty string.</t>
        </list>
Otherwise:      <list style="numbers">
          <t>Ignore the cookie entirely and abort these steps.</t>
        </list></t>
    </list>
NOTE: A “public suffix” is a domain that is controlled by a public registry,
such as “com”, “co.uk”, and “pvt.k12.wy.us”. This step is essential for
preventing attacker.com from disrupting the integrity of example.com by
setting a cookie with a Domain attribute of “com”. Unfortunately, the set
of public suffixes (also known as “registry controlled domains”) changes
over time. If feasible, user agents SHOULD use an up-to-date public suffix
list, such as the one maintained by the Mozilla project at
<eref target="http://publicsuffix.org/">http://publicsuffix.org/</eref>.</t>
  <t>If the domain-attribute is non-empty:  <list style="numbers">
      <t>If the canonicalized request-host does not domain-match the
domain-attribute:      <list style="numbers">
          <t>Ignore the cookie entirely and abort these steps.</t>
        </list>
Otherwise:      <list style="numbers">
          <t>Set the cookie’s host-only-flag to false.</t>
          <t>Set the cookie’s domain to the domain-attribute.</t>
        </list></t>
    </list>
Otherwise:  <list style="numbers">
      <t>Set the cookie’s host-only-flag to true.</t>
      <t>Set the cookie’s domain to the canonicalized request-host.</t>
    </list></t>
  <t>If the cookie-attribute-list contains an attribute with an
attribute-name of “Path”, set the cookie’s path to attribute-value of
the last attribute in the cookie-attribute-list with an attribute-name
of “Path”. Otherwise, set the cookie’s path to the default-path of the
request-uri.</t>
  <t>If the cookie-attribute-list contains an attribute with an
attribute-name of “Secure”, set the cookie’s secure-only-flag to true.
Otherwise, set the cookie’s secure-only-flag to false.</t>
  <t>If the scheme component of the request-uri does not denote a “secure”
protocol (as defined by the user agent), and the cookie’s secure-only-flag
is true, then abort these steps and ignore the cookie entirely.</t>
  <t>If the cookie-attribute-list contains an attribute with an
attribute-name of “HttpOnly”, set the cookie’s http-only-flag to true.
Otherwise, set the cookie’s http-only-flag to false.</t>
  <t>If the cookie was received from a “non-HTTP” API and the cookie’s
http-only-flag is true, abort these steps and ignore the cookie entirely.</t>
  <t>If the cookie’s secure-only-flag is not set, and the scheme component of
request-uri does not denote a “secure” protocol, then abort these steps and
ignore the cookie entirely if the cookie store contains one or more cookies
that meet all of the following criteria:  <list style="numbers">
      <t>Their name matches the name of the newly-created cookie.</t>
      <t>Their secure-only-flag is true.</t>
      <t>Their domain domain-matches the domain of the newly-created cookie, or
vice-versa.</t>
      <t>The path of the newly-created cookie path-matches the path of the
existing cookie.</t>
    </list>
Note: The path comparison is not symmetric, ensuring only that a
newly-created, non-secure cookie does not overlay an existing secure
cookie, providing some mitigation against cookie-fixing attacks. That is,
given an existing secure cookie named ‘a’ with a path of ‘/login’, a
non-secure cookie named ‘a’ could be set for a path of ‘/’ or ‘/foo’, but
not for a path of ‘/login’ or ‘/login/en’.</t>
  <t>If the cookie-attribute-list contains an attribute with an
attribute-name of “SameSite”, set the cookie’s same-site-flag to
attribute-value (i.e. either “Strict”, “Lax”, or “None”). Otherwise, set the
cookie’s same-site-flag to “None”.</t>
  <t>If the cookie’s <spanx style="verb">same-site-flag</spanx> is not “None”, and the cookie is being set
from a context whose “site for cookies” is not an exact match for
request-uri’s host’s registered domain, then abort these steps and ignore
the newly created cookie entirely.</t>
  <t>If the cookie-name begins with a case-sensitive match for the string
“__Secure-“, abort these steps and ignore the cookie entirely unless the
cookie’s secure-only-flag is true.</t>
  <t>If the cookie-name begins with a case-sensitive match for the string
“__Host-“, abort these steps and ignore the cookie entirely unless the
cookie meets all the following criteria:  <list style="numbers">
      <t>The cookie’s secure-only-flag is true.</t>
      <t>The cookie’s host-only-flag is true.</t>
      <t>The cookie-attribute-list contains an attribute with an attribute-name
of “Path”, and the cookie’s path is <spanx style="verb">/</spanx>.</t>
    </list></t>
  <t>If the cookie store contains a cookie with the same name, domain,
host-only-flag, and path as the newly-created cookie:  <list style="numbers">
      <t>Let old-cookie be the existing cookie with the same name, domain,
host-only-flag, and path as the newly-created cookie. (Notice that this
algorithm maintains the invariant that there is at most one such
cookie.)</t>
      <t>If the newly-created cookie was received from a “non-HTTP” API and the
old-cookie’s http-only-flag is true, abort these steps and ignore the
newly created cookie entirely.</t>
      <t>Update the creation-time of the newly-created cookie to match the
creation-time of the old-cookie.</t>
      <t>Remove the old-cookie from the cookie store.</t>
    </list></t>
  <t>Insert the newly-created cookie into the cookie store.</t>
</list></t>

<t>A cookie is “expired” if the cookie has an expiry date in the past.</t>

<t>The user agent MUST evict all expired cookies from the cookie store if, at any
time, an expired cookie exists in the cookie store.</t>

<t>At any time, the user agent MAY “remove excess cookies” from the cookie store
if the number of cookies sharing a domain field exceeds some
implementation-defined upper bound (such as 50 cookies).</t>

<t>At any time, the user agent MAY “remove excess cookies” from the cookie store
if the cookie store exceeds some predetermined upper bound (such as 3000
cookies).</t>

<t>When the user agent removes excess cookies from the cookie store, the user
agent MUST evict cookies in the following priority order:</t>

<t><list style="numbers">
  <t>Expired cookies.</t>
  <t>Cookies whose secure-only-flag is not set, and which share a domain field
with more than a predetermined number of other cookies.</t>
  <t>Cookies that share a domain field with more than a predetermined number of
other cookies.</t>
  <t>All cookies.</t>
</list></t>

<t>If two cookies have the same removal priority, the user agent MUST evict the
cookie with the earliest last-access date first.</t>

<t>When “the current session is over” (as defined by the user agent), the user
agent MUST remove from the cookie store all cookies with the persistent-flag
set to false.</t>

</section>
<section anchor="cookie" title="The Cookie Header">

<t>The user agent includes stored cookies in the Cookie HTTP request header.</t>

<t>When the user agent generates an HTTP request, the user agent MUST NOT attach
more than one Cookie header field.</t>

<t>A user agent MAY omit the Cookie header in its entirety.  For example, the
user agent might wish to block sending cookies during “third-party” requests
from setting cookies (see <xref target="third-party-cookies"/>).</t>

<t>If the user agent does attach a Cookie header field to an HTTP request, the
user agent MUST send the cookie-string (defined below) as the value of the
header field.</t>

<t>The user agent MUST use an algorithm equivalent to the following algorithm to
compute the cookie-string from a cookie store and a request-uri:</t>

<t><list style="numbers">
  <t>Let cookie-list be the set of cookies from the cookie store that meets all
of the following requirements:  <list style="symbols">
      <t>Either:      <list style="symbols">
          <t>The cookie’s host-only-flag is true and the canonicalized
request-host is identical to the cookie’s domain.</t>
        </list>
Or:      <list style="symbols">
          <t>The cookie’s host-only-flag is false and the canonicalized
request-host domain-matches the cookie’s domain.</t>
        </list></t>
      <t>The request-uri’s path path-matches the cookie’s path.</t>
      <t>If the cookie’s secure-only-flag is true, then the request-uri’s
scheme must denote a “secure” protocol (as defined by the user agent).      <vspace blankLines='1'/>
NOTE: The notion of a “secure” protocol is not defined by this document.
Typically, user agents consider a protocol secure if the protocol makes
use of transport-layer security, such as SSL or TLS. For example, most
user agents consider “https” to be a scheme that denotes a secure
protocol.</t>
      <t>If the cookie’s http-only-flag is true, then exclude the cookie if the
cookie-string is being generated for a “non-HTTP” API (as defined by
the user agent).</t>
      <t>If the cookie’s same-site-flag is not “None”, and the HTTP request is
cross-site (as defined in <xref target="same-site-requests"/>) then exclude the
cookie unless all of the following statements hold:      <list style="numbers">
          <t>The same-site-flag is “Lax”</t>
          <t>The HTTP request’s method is “safe”.</t>
          <t>The HTTP request’s target browsing context is a top-level browsing
context.</t>
        </list></t>
    </list></t>
  <t>The user agent SHOULD sort the cookie-list in the following order:  <list style="symbols">
      <t>Cookies with longer paths are listed before cookies with shorter
paths.</t>
      <t>Among cookies that have equal-length path fields, cookies with earlier
creation-times are listed before cookies with later creation-times.</t>
    </list>
NOTE: Not all user agents sort the cookie-list in this order, but this order
reflects common practice when this document was written, and, historically,
there have been servers that (erroneously) depended on this order.</t>
  <t>Update the last-access-time of each cookie in the cookie-list to the
current date and time.</t>
  <t>Serialize the cookie-list into a cookie-string by processing each cookie
in the cookie-list in order:  <list style="numbers">
      <t>Output the cookie’s name, the %x3D (“=”) character, and the cookie’s
value.</t>
      <t>If there is an unprocessed cookie in the cookie-list, output the
characters %x3B and %x20 (“; “).</t>
    </list></t>
</list></t>

<t>NOTE: Despite its name, the cookie-string is actually a sequence of octets, not
a sequence of characters.  To convert the cookie-string (or components
thereof) into a sequence of characters (e.g., for presentation to the user),
the user agent might wish to try using the UTF-8 character encoding <xref target="RFC3629"/>
to decode the octet sequence. This decoding might fail, however, because not
every sequence of octets is valid UTF-8.</t>

</section>
</section>
<section anchor="implementation-considerations" title="Implementation Considerations">

<section anchor="limits" title="Limits">

<t>Practical user agent implementations have limits on the number and size of
cookies that they can store. General-use user agents SHOULD provide each of the
following minimum capabilities:</t>

<t><list style="symbols">
  <t>At least 4096 bytes per cookie (as measured by the sum of the length of the
cookie’s name, value, and attributes).</t>
  <t>At least 50 cookies per domain.</t>
  <t>At least 3000 cookies total.</t>
</list></t>

<t>Servers SHOULD use as few and as small cookies as possible to avoid reaching
these implementation limits and to minimize network bandwidth due to the
Cookie header being included in every request.</t>

<t>Servers SHOULD gracefully degrade if the user agent fails to return one or more
cookies in the Cookie header because the user agent might evict any cookie at
any time on orders from the user.</t>

</section>
<section anchor="application-programming-interfaces" title="Application Programming Interfaces">

<t>One reason the Cookie and Set-Cookie headers use such esoteric syntax is
that many platforms (both in servers and user agents) provide a string-based
application programming interface (API) to cookies, requiring
application-layer programmers to generate and parse the syntax used by the
Cookie and Set-Cookie headers, which many programmers have done incorrectly,
resulting in interoperability problems.</t>

<t>Instead of providing string-based APIs to cookies, platforms would be
well-served by providing more semantic APIs. It is beyond the scope of this
document to recommend specific API designs, but there are clear benefits to
accepting an abstract “Date” object instead of a serialized date string.</t>

</section>
<section anchor="idna-migration" title="IDNA Dependency and Migration">

<t>IDNA2008 <xref target="RFC5890"/> supersedes IDNA2003 <xref target="RFC3490"/>. However, there are
differences between the two specifications, and thus there can be differences
in processing (e.g., converting) domain name labels that have been registered
under one from those registered under the other. There will be a transition
period of some time during which IDNA2003-based domain name labels will exist
in the wild. User agents SHOULD implement IDNA2008 <xref target="RFC5890"/> and MAY
implement <xref target="UTS46"/> or <xref target="RFC5895"/> in order to facilitate their IDNA transition.
If a user agent does not implement IDNA2008, the user agent MUST implement
IDNA2003 <xref target="RFC3490"/>.</t>

</section>
</section>
<section anchor="privacy-considerations" title="Privacy Considerations">

<t>Cookies are often criticized for letting servers track users. For example, a
number of “web analytics” companies use cookies to recognize when a user returns
to a web site or visits another web site. Although cookies are not the only
mechanism servers can use to track users across HTTP requests, cookies
facilitate tracking because they are persistent across user agent sessions and
can be shared between hosts.</t>

<section anchor="third-party-cookies" title="Third-Party Cookies">

<t>Particularly worrisome are so-called “third-party” cookies. In rendering an HTML
document, a user agent often requests resources from other servers (such as
advertising networks). These third-party servers can use cookies to track the
user even if the user never visits the server directly. For example, if a user
visits a site that contains content from a third party and then later visits
another site that contains content from the same third party, the third party
can track the user between the two sites.</t>

<t>Given this risk to user privacy, some user agents restrict how third-party
cookies behave, and those restrictions vary widly. For instance, user agents
might block third-party cookies entirely by refusing to send Cookie headers or
process Set-Cookie headers during third-party requests. They might take a less
draconian approach by partitioning cookies based on the first-party context,
sending one set of cookies to a given third party in one first-party context,
and another to the same third party in another.</t>

<t>This document grants user agents wide latitude to experiment with third-party
cookie policies that balance the privacy and compatibility needs of their users.
However, this document does not endorse any particular third-party cookie
policy.</t>

<t>Third-party cookie blocking policies are often ineffective at achieving their
privacy goals if servers attempt to work around their restrictions to track
users. In particular, two collaborating servers can often track users without
using cookies at all by injecting identifying information into dynamic URLs.</t>

</section>
<section anchor="user-controls" title="User Controls">

<t>User agents SHOULD provide users with a mechanism for managing the cookies
stored in the cookie store. For example, a user agent might let users delete
all cookies received during a specified time period or all the cookies related
to a particular domain. In addition, many user agents include a user interface
element that lets users examine the cookies stored in their cookie store.</t>

<t>User agents SHOULD provide users with a mechanism for disabling cookies. When
cookies are disabled, the user agent MUST NOT include a Cookie header in
outbound HTTP requests and the user agent MUST NOT process Set-Cookie headers
in inbound HTTP responses.</t>

<t>Some user agents provide users the option of preventing persistent storage of
cookies across sessions. When configured thusly, user agents MUST treat all
received cookies as if the persistent-flag were set to false. Some popular
user agents expose this functionality via “private browsing” mode
<xref target="Aggarwal2010"/>.</t>

<t>Some user agents provide users with the ability to approve individual writes to
the cookie store. In many common usage scenarios, these controls generate a
large number of prompts. However, some privacy-conscious users find these
controls useful nonetheless.</t>

</section>
<section anchor="expiration-dates" title="Expiration Dates">

<t>Although servers can set the expiration date for cookies to the distant future,
most user agents do not actually retain cookies for multiple decades. Rather
than choosing gratuitously long expiration periods, servers SHOULD promote user
privacy by selecting reasonable cookie expiration periods based on the purpose
of the cookie. For example, a typical session identifier might reasonably be
set to expire in two weeks.</t>

</section>
</section>
<section anchor="security-considerations" title="Security Considerations">

<section anchor="overview-1" title="Overview">

<t>Cookies have a number of security pitfalls. This section overviews a few of the
more salient issues.</t>

<t>In particular, cookies encourage developers to rely on ambient authority for
authentication, often becoming vulnerable to attacks such as cross-site request
forgery <xref target="CSRF"/>. Also, when storing session identifiers in cookies, developers
often create session fixation vulnerabilities.</t>

<t>Transport-layer encryption, such as that employed in HTTPS, is insufficient to
prevent a network attacker from obtaining or altering a victim’s cookies because
the cookie protocol itself has various vulnerabilities (see “Weak Confidentiality”
and “Weak Integrity”, below). In addition, by default, cookies do not provide
confidentiality or integrity from network attackers, even when used in conjunction
with HTTPS.</t>

</section>
<section anchor="ambient-authority" title="Ambient Authority">

<t>A server that uses cookies to authenticate users can suffer security
vulnerabilities because some user agents let remote parties issue HTTP requests
from the user agent (e.g., via HTTP redirects or HTML forms). When issuing
those requests, user agents attach cookies even if the remote party does not
know the contents of the cookies, potentially letting the remote party exercise
authority at an unwary server.</t>

<t>Although this security concern goes by a number of names (e.g., cross-site
request forgery, confused deputy), the issue stems from cookies being a form of
ambient authority. Cookies encourage server operators to separate designation
(in the form of URLs) from authorization (in the form of cookies).
Consequently, the user agent might supply the authorization for a resource
designated by the attacker, possibly causing the server or its clients to
undertake actions designated by the attacker as though they were authorized by
the user.</t>

<t>Instead of using cookies for authorization, server operators might wish to
consider entangling designation and authorization by treating URLs as
capabilities. Instead of storing secrets in cookies, this approach stores
secrets in URLs, requiring the remote entity to supply the secret itself.
Although this approach is not a panacea, judicious application of these
principles can lead to more robust security.</t>

</section>
<section anchor="clear-text" title="Clear Text">

<t>Unless sent over a secure channel (such as TLS), the information in the Cookie
and Set-Cookie headers is transmitted in the clear.</t>

<t><list style="numbers">
  <t>All sensitive information conveyed in these headers is exposed to an
eavesdropper.</t>
  <t>A malicious intermediary could alter the headers as they travel in either
direction, with unpredictable results.</t>
  <t>A malicious client could alter the Cookie header before transmission,
with unpredictable results.</t>
</list></t>

<t>Servers SHOULD encrypt and sign the contents of cookies (using whatever format
the server desires) when transmitting them to the user agent (even when sending
the cookies over a secure channel). However, encrypting and signing cookie
contents does not prevent an attacker from transplanting a cookie from one user
agent to another or from replaying the cookie at a later time.</t>

<t>In addition to encrypting and signing the contents of every cookie, servers that
require a higher level of security SHOULD use the Cookie and Set-Cookie
headers only over a secure channel. When using cookies over a secure channel,
servers SHOULD set the Secure attribute (see <xref target="sane-secure"/>) for every
cookie. If a server does not set the Secure attribute, the protection
provided by the secure channel will be largely moot.</t>

<t>For example, consider a webmail server that stores a session identifier in a
cookie and is typically accessed over HTTPS. If the server does not set the
Secure attribute on its cookies, an active network attacker can intercept any
outbound HTTP request from the user agent and redirect that request to the
webmail server over HTTP. Even if the webmail server is not listening for HTTP
connections, the user agent will still include cookies in the request. The
active network attacker can intercept these cookies, replay them against the
server, and learn the contents of the user’s email. If, instead, the server had
set the Secure attribute on its cookies, the user agent would not have
included the cookies in the clear-text request.</t>

</section>
<section anchor="session-identifiers" title="Session Identifiers">

<t>Instead of storing session information directly in a cookie (where it might be
exposed to or replayed by an attacker), servers commonly store a nonce (or
“session identifier”) in a cookie. When the server receives an HTTP request
with a nonce, the server can look up state information associated with the
cookie using the nonce as a key.</t>

<t>Using session identifier cookies limits the damage an attacker can cause if the
attacker learns the contents of a cookie because the nonce is useful only for
interacting with the server (unlike non-nonce cookie content, which might itself
be sensitive). Furthermore, using a single nonce prevents an attacker from
“splicing” together cookie content from two interactions with the server, which
could cause the server to behave unexpectedly.</t>

<t>Using session identifiers is not without risk. For example, the server SHOULD
take care to avoid “session fixation” vulnerabilities. A session fixation attack
proceeds in three steps. First, the attacker transplants a session identifier
from his or her user agent to the victim’s user agent. Second, the victim uses
that session identifier to interact with the server, possibly imbuing the
session identifier with the user’s credentials or confidential information.
Third, the attacker uses the session identifier to interact with server
directly, possibly obtaining the user’s authority or confidential information.</t>

</section>
<section anchor="weak-confidentiality" title="Weak Confidentiality">

<t>Cookies do not provide isolation by port. If a cookie is readable by a service
running on one port, the cookie is also readable by a service running on another
port of the same server. If a cookie is writable by a service on one port, the
cookie is also writable by a service running on another port of the same server.
For this reason, servers SHOULD NOT both run mutually distrusting services on
different ports of the same host and use cookies to store security-sensitive
information.</t>

<t>Cookies do not provide isolation by scheme. Although most commonly used with
the http and https schemes, the cookies for a given host might also be
available to other schemes, such as ftp and gopher. Although this lack of
isolation by scheme is most apparent in non-HTTP APIs that permit access to
cookies (e.g., HTML’s document.cookie API), the lack of isolation by scheme
is actually present in requirements for processing cookies themselves (e.g.,
consider retrieving a URI with the gopher scheme via HTTP).</t>

<t>Cookies do not always provide isolation by path. Although the network-level
protocol does not send cookies stored for one path to another, some user
agents expose cookies via non-HTTP APIs, such as HTML’s document.cookie API.
Because some of these user agents (e.g., web browsers) do not isolate resources
received from different paths, a resource retrieved from one path might be able
to access cookies stored for another path.</t>

</section>
<section anchor="weak-integrity" title="Weak Integrity">

<t>Cookies do not provide integrity guarantees for sibling domains (and their
subdomains). For example, consider foo.example.com and bar.example.com. The
foo.example.com server can set a cookie with a Domain attribute of
“example.com” (possibly overwriting an existing “example.com” cookie set by
bar.example.com), and the user agent will include that cookie in HTTP requests
to bar.example.com. In the worst case, bar.example.com will be unable to
distinguish this cookie from a cookie it set itself. The foo.example.com
server might be able to leverage this ability to mount an attack against
bar.example.com.</t>

<t>Even though the Set-Cookie header supports the Path attribute, the Path
attribute does not provide any integrity protection because the user agent
will accept an arbitrary Path attribute in a Set-Cookie header. For
example, an HTTP response to a request for http://example.com/foo/bar can set
a cookie with a Path attribute of “/qux”. Consequently, servers SHOULD NOT
both run mutually distrusting services on different paths of the same host and
use cookies to store security-sensitive information.</t>

<t>An active network attacker can also inject cookies into the Cookie header
sent to https://example.com/ by impersonating a response from
http://example.com/ and injecting a Set-Cookie header. The HTTPS server
at example.com will be unable to distinguish these cookies from cookies that
it set itself in an HTTPS response. An active network attacker might be able
to leverage this ability to mount an attack against example.com even if
example.com uses HTTPS exclusively.</t>

<t>Servers can partially mitigate these attacks by encrypting and signing the
contents of their cookies. However, using cryptography does not mitigate the
issue completely because an attacker can replay a cookie he or she received from
the authentic example.com server in the user’s session, with unpredictable
results.</t>

<t>Finally, an attacker might be able to force the user agent to delete cookies by
storing a large number of cookies. Once the user agent reaches its storage
limit, the user agent will be forced to evict some cookies. Servers SHOULD NOT
rely upon user agents retaining cookies.</t>

</section>
<section anchor="reliance-on-dns" title="Reliance on DNS">

<t>Cookies rely upon the Domain Name System (DNS) for security. If the DNS is
partially or fully compromised, the cookie protocol might fail to provide the
security properties required by applications.</t>

</section>
<section anchor="samesite-cookies" title="SameSite Cookies">

<section anchor="defense-in-depth" title="Defense in depth">

<t>“SameSite” cookies offer a robust defense against CSRF attack when deployed in
strict mode, and when supported by the client. It is, however, prudent to ensure
that this designation is not the extent of a site’s defense against CSRF, as
same-site navigations and submissions can certainly be executed in conjunction
with other attack vectors such as cross-site scripting.</t>

<t>Developers are strongly encouraged to deploy the usual server-side defenses
(CSRF tokens, ensuring that “safe” HTTP methods are idempotent, etc) to mitigate
the risk more fully.</t>

<t>Additionally, client-side techniques such as those described in
<xref target="app-isolation"/> may also prove effective against CSRF, and are certainly worth
exploring in combination with “SameSite” cookies.</t>

</section>
<section anchor="top-level-navigations" title="Top-level Navigations">

<t>Setting the <spanx style="verb">SameSite</spanx> attribute in “strict” mode provides robust defense in
depth against CSRF attacks, but has the potential to confuse users unless sites’
developers carefully ensure that their cookie-based session management systems
deal reasonably well with top-level navigations.</t>

<t>Consider the scenario in which a user reads their email at MegaCorp Inc’s
webmail provider <spanx style="verb">https://example.com/</spanx>. They might expect that clicking on an
emailed link to <spanx style="verb">https://projects.com/secret/project</spanx> would show them the secret
project that they’re authorized to see, but if <spanx style="verb">projects.com</spanx> has marked their
session cookies as <spanx style="verb">SameSite</spanx>, then this cross-site navigation won’t send them
along with the request. <spanx style="verb">projects.com</spanx> will render a 404 error to avoid leaking
secret information, and the user will be quite confused.</t>

<t>Developers can avoid this confusion by adopting a session management system that
relies on not one, but two cookies: one conceptually granting “read” access,
another granting “write” access. The latter could be marked as <spanx style="verb">SameSite</spanx>, and
its absence would prompt a reauthentication step before executing any
non-idempotent action. The former could drop the <spanx style="verb">SameSite</spanx> attribute entirely,
or choose the “Lax” version of enforcement, in order to allow users access to
data via top-level navigation.</t>

</section>
<section anchor="mashups-and-widgets" title="Mashups and Widgets">

<t>The <spanx style="verb">SameSite</spanx> attribute is inappropriate for some important use-cases. In
particular, note that content intended for embedding in a cross-site contexts
(social networking widgets or commenting services, for instance) will not have
access to same-site cookies. Cookies may be required for requests triggered in
these cross-site contexts in order to provide seamless functionality that relies
on a user’s state.</t>

<t>Likewise, some forms of Single-Sign-On might require cookie-based authentication
in a cross-site context; these mechanisms will not function as intended with
same-site cookies.</t>

</section>
<section anchor="server-controlled" title="Server-controlled">

<t>SameSite cookies in and of themselves don’t do anything to address the
general privacy concerns outlined in Section 7.1 of <xref target="RFC6265"/>. The “SameSite”
attribute is set by the server, and serves to mitigate the risk of certain kinds
of attacks that the server is worried about. The user is not involved in this
decision. Moreover, a number of side-channels exist which could allow a server
to link distinct requests even in the absence of cookies. Connection and/or
socket pooling, Token Binding, and Channel ID all offer explicit methods of
identification that servers could take advantage of.</t>

</section>
</section>
</section>
<section anchor="iana-considerations" title="IANA Considerations">

<t>The permanent message header field registry (see <xref target="RFC3864"/>) needs to be
updated with the following registrations.</t>

<section anchor="iana-cookie" title="Cookie">

<t><list style="hanging">
  <t hangText='Header field name:'>
  Cookie</t>
  <t hangText='Applicable protocol:'>
  http</t>
  <t hangText='Status:'>
  standard</t>
  <t hangText='Author/Change controller:'>
  IETF</t>
  <t hangText='Specification document:'>
  this specification (<xref target="cookie"/>)</t>
</list></t>

</section>
<section anchor="iana-set-cookie" title="Set-Cookie">

<t><list style="hanging">
  <t hangText='Header field name:'>
  Set-Cookie</t>
  <t hangText='Applicable protocol:'>
  http</t>
  <t hangText='Status:'>
  standard</t>
  <t hangText='Author/Change controller:'>
  IETF</t>
  <t hangText='Specification document:'>
  this specification (<xref target="set-cookie"/>)</t>
</list></t>

</section>
</section>


  </middle>

  <back>

    <references title='Normative References'>





<reference  anchor="RFC1034" target='https://www.rfc-editor.org/info/rfc1034'>
<front>
<title>Domain names - concepts and facilities</title>
<author initials='P.V.' surname='Mockapetris' fullname='P.V. Mockapetris'><organization /></author>
<date year='1987' month='November' />
<abstract><t>This RFC is the revised basic definition of The Domain Name System.  It obsoletes RFC-882.  This memo describes the domain style names and their used for host address look up and electronic mail forwarding.  It discusses the clients and servers in the domain name system and the protocol used between them.</t></abstract>
</front>
<seriesInfo name='STD' value='13'/>
<seriesInfo name='RFC' value='1034'/>
<seriesInfo name='DOI' value='10.17487/RFC1034'/>
</reference>



<reference  anchor="RFC1123" target='https://www.rfc-editor.org/info/rfc1123'>
<front>
<title>Requirements for Internet Hosts - Application and Support</title>
<author initials='R.' surname='Braden' fullname='R. Braden' role='editor'><organization /></author>
<date year='1989' month='October' />
<abstract><t>This RFC is an official specification for the Internet community.  It incorporates by reference, amends, corrects, and supplements the primary protocol standards documents relating to hosts.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='STD' value='3'/>
<seriesInfo name='RFC' value='1123'/>
<seriesInfo name='DOI' value='10.17487/RFC1123'/>
</reference>



<reference  anchor="RFC2119" target='https://www.rfc-editor.org/info/rfc2119'>
<front>
<title>Key words for use in RFCs to Indicate Requirement Levels</title>
<author initials='S.' surname='Bradner' fullname='S. Bradner'><organization /></author>
<date year='1997' month='March' />
<abstract><t>In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized. This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t></abstract>
</front>
<seriesInfo name='BCP' value='14'/>
<seriesInfo name='RFC' value='2119'/>
<seriesInfo name='DOI' value='10.17487/RFC2119'/>
</reference>


<reference anchor="RFC3490" >
  <front>
    <title>Internationalizing Domain Names in Applications (IDNA)</title>
    <author initials="A." surname="Costello">
      <organization></organization>
    </author>
    <date year="2003" month="March"/>
  </front>
  <seriesInfo name="RFC" value="3490"/>
<annotation>See <xref target="idna-migration"/> for an explanation why the normative reference to an obsoleted specification is needed.</annotation></reference>




<reference  anchor="RFC4790" target='https://www.rfc-editor.org/info/rfc4790'>
<front>
<title>Internet Application Protocol Collation Registry</title>
<author initials='C.' surname='Newman' fullname='C. Newman'><organization /></author>
<author initials='M.' surname='Duerst' fullname='M. Duerst'><organization /></author>
<author initials='A.' surname='Gulbrandsen' fullname='A. Gulbrandsen'><organization /></author>
<date year='2007' month='March' />
<abstract><t>Many Internet application protocols include string-based lookup, searching, or sorting operations.  However, the problem space for searching and sorting international strings is large, not fully explored, and is outside the area of expertise for the Internet Engineering Task Force (IETF).  Rather than attempt to solve such a large problem, this specification creates an abstraction framework so that application protocols can precisely identify a comparison function, and the repertoire of comparison functions can be extended in the future.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='4790'/>
<seriesInfo name='DOI' value='10.17487/RFC4790'/>
</reference>



<reference  anchor="RFC5234" target='https://www.rfc-editor.org/info/rfc5234'>
<front>
<title>Augmented BNF for Syntax Specifications: ABNF</title>
<author initials='D.' surname='Crocker' fullname='D. Crocker' role='editor'><organization /></author>
<author initials='P.' surname='Overell' fullname='P. Overell'><organization /></author>
<date year='2008' month='January' />
<abstract><t>Internet technical specifications often need to define a formal syntax.  Over the years, a modified version of Backus-Naur Form (BNF), called Augmented BNF (ABNF), has been popular among many Internet specifications.  The current specification documents ABNF. It balances compactness and simplicity with reasonable representational power.  The differences between standard BNF and ABNF involve naming rules, repetition, alternatives, order-independence, and value ranges.  This specification also supplies additional rule definitions and encoding for a core lexical analyzer of the type common to several Internet specifications.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='STD' value='68'/>
<seriesInfo name='RFC' value='5234'/>
<seriesInfo name='DOI' value='10.17487/RFC5234'/>
</reference>



<reference  anchor="RFC5890" target='https://www.rfc-editor.org/info/rfc5890'>
<front>
<title>Internationalized Domain Names for Applications (IDNA): Definitions and Document Framework</title>
<author initials='J.' surname='Klensin' fullname='J. Klensin'><organization /></author>
<date year='2010' month='August' />
<abstract><t>This document is one of a collection that, together, describe the protocol and usage context for a revision of Internationalized Domain Names for Applications (IDNA), superseding the earlier version.  It describes the document collection and provides definitions and other material that are common to the set.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='5890'/>
<seriesInfo name='DOI' value='10.17487/RFC5890'/>
</reference>



<reference  anchor="RFC6454" target='https://www.rfc-editor.org/info/rfc6454'>
<front>
<title>The Web Origin Concept</title>
<author initials='A.' surname='Barth' fullname='A. Barth'><organization /></author>
<date year='2011' month='December' />
<abstract><t>This document defines the concept of an &quot;origin&quot;, which is often used as the scope of authority or privilege by user agents.  Typically, user agents isolate content retrieved from different origins to prevent malicious web site operators from interfering with the operation of benign web sites.  In addition to outlining the principles that underlie the concept of origin, this document details how to determine the origin of a URI and how to serialize an origin into a string.  It also defines an HTTP header field, named &quot;Origin&quot;, that indicates which origins are associated with an HTTP request.   [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='6454'/>
<seriesInfo name='DOI' value='10.17487/RFC6454'/>
</reference>



<reference  anchor="RFC7230" target='https://www.rfc-editor.org/info/rfc7230'>
<front>
<title>Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing</title>
<author initials='R.' surname='Fielding' fullname='R. Fielding' role='editor'><organization /></author>
<author initials='J.' surname='Reschke' fullname='J. Reschke' role='editor'><organization /></author>
<date year='2014' month='June' />
<abstract><t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems.  This document provides an overview of HTTP architecture and its associated terminology, defines the &quot;http&quot; and &quot;https&quot; Uniform Resource Identifier (URI) schemes, defines the HTTP/1.1 message syntax and parsing requirements, and describes related security concerns for implementations.</t></abstract>
</front>
<seriesInfo name='RFC' value='7230'/>
<seriesInfo name='DOI' value='10.17487/RFC7230'/>
</reference>



<reference  anchor="RFC7231" target='https://www.rfc-editor.org/info/rfc7231'>
<front>
<title>Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content</title>
<author initials='R.' surname='Fielding' fullname='R. Fielding' role='editor'><organization /></author>
<author initials='J.' surname='Reschke' fullname='J. Reschke' role='editor'><organization /></author>
<date year='2014' month='June' />
<abstract><t>The Hypertext Transfer Protocol (HTTP) is a stateless \%application- level protocol for distributed, collaborative, hypertext information systems.  This document defines the semantics of HTTP/1.1 messages, as expressed by request methods, request header fields, response status codes, and response header fields, along with the payload of messages (metadata and body content) and mechanisms for content negotiation.</t></abstract>
</front>
<seriesInfo name='RFC' value='7231'/>
<seriesInfo name='DOI' value='10.17487/RFC7231'/>
</reference>


<reference anchor="USASCII" >
  <front>
    <title>Coded Character Set -- 7-bit American Standard Code for Information Interchange</title>
    <author >
      <organization>American National Standards Institute</organization>
    </author>
    <date year="1986"/>
  </front>
  <seriesInfo name="ANSI" value="X3.4"/>
</reference>
<reference anchor="FETCH" target="https://fetch.spec.whatwg.org/">
  <front>
    <title>Fetch</title>
    <author initials="A." surname="van Kesteren" fullname="Anne van Kesteren">
      <organization>Mozilla</organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>
<reference anchor="HTML" target="https://html.spec.whatwg.org/">
  <front>
    <title>HTML</title>
    <author initials="I." surname="Hickson" fullname="Ian Hickson">
      <organization>Google, Inc.</organization>
    </author>
    <author initials="S." surname="Pieters" fullname="Simon Pieters">
      <organization>Opera</organization>
    </author>
    <author initials="A." surname="van Kesteren" fullname="Anne van Kesteren">
      <organization>Mozilla</organization>
    </author>
    <author initials="P." surname="Jägenstedt" fullname="Philip Jägenstedt">
      <organization>Opera</organization>
    </author>
    <author initials="D." surname="Denicola" fullname="Domenic Denicola">
      <organization>Google, Inc.</organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>
<reference anchor="SERVICE-WORKERS" target="http://www.w3.org/TR/service-workers/">
  <front>
    <title>Service Workers</title>
    <author initials="A." surname="Russell" fullname="Alex Russell">
      <organization></organization>
    </author>
    <author initials="J." surname="Song" fullname="Jungkee Song">
      <organization></organization>
    </author>
    <author initials="J." surname="Archibald" fullname="Jake Archibald">
      <organization></organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>
<reference anchor="PSL" target="https://publicsuffix.org/list/">
  <front>
    <title>Public Suffix List</title>
    <author >
      <organization></organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>


    </references>

    <references title='Informative References'>





<reference  anchor="RFC2818" target='https://www.rfc-editor.org/info/rfc2818'>
<front>
<title>HTTP Over TLS</title>
<author initials='E.' surname='Rescorla' fullname='E. Rescorla'><organization /></author>
<date year='2000' month='May' />
<abstract><t>This memo describes how to use Transport Layer Security (TLS) to secure Hypertext Transfer Protocol (HTTP) connections over the Internet.  This memo provides information for the Internet community.</t></abstract>
</front>
<seriesInfo name='RFC' value='2818'/>
<seriesInfo name='DOI' value='10.17487/RFC2818'/>
</reference>



<reference  anchor="RFC3986" target='https://www.rfc-editor.org/info/rfc3986'>
<front>
<title>Uniform Resource Identifier (URI): Generic Syntax</title>
<author initials='T.' surname='Berners-Lee' fullname='T. Berners-Lee'><organization /></author>
<author initials='R.' surname='Fielding' fullname='R. Fielding'><organization /></author>
<author initials='L.' surname='Masinter' fullname='L. Masinter'><organization /></author>
<date year='2005' month='January' />
<abstract><t>A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource.  This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet.  The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier.  This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='STD' value='66'/>
<seriesInfo name='RFC' value='3986'/>
<seriesInfo name='DOI' value='10.17487/RFC3986'/>
</reference>



<reference  anchor="RFC6265" target='https://www.rfc-editor.org/info/rfc6265'>
<front>
<title>HTTP State Management Mechanism</title>
<author initials='A.' surname='Barth' fullname='A. Barth'><organization /></author>
<date year='2011' month='April' />
<abstract><t>This document defines the HTTP Cookie and Set-Cookie header fields. These header fields can be used by HTTP servers to store state (called cookies) at HTTP user agents, letting the servers maintain a stateful session over the mostly stateless HTTP protocol.  Although cookies have many historical infelicities that degrade their security and privacy, the Cookie and Set-Cookie header fields are widely used on the Internet.  This document obsoletes RFC 2965.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='6265'/>
<seriesInfo name='DOI' value='10.17487/RFC6265'/>
</reference>



<reference  anchor="RFC3629" target='https://www.rfc-editor.org/info/rfc3629'>
<front>
<title>UTF-8, a transformation format of ISO 10646</title>
<author initials='F.' surname='Yergeau' fullname='F. Yergeau'><organization /></author>
<date year='2003' month='November' />
<abstract><t>ISO/IEC 10646-1 defines a large character set called the Universal Character Set (UCS) which encompasses most of the world's writing systems.  The originally proposed encodings of the UCS, however, were not compatible with many current applications and protocols, and this has led to the development of UTF-8, the object of this memo.  UTF-8 has the characteristic of preserving the full US-ASCII range, providing compatibility with file systems, parsers and other software that rely on US-ASCII values but are transparent to other values.  This memo obsoletes and replaces RFC 2279.</t></abstract>
</front>
<seriesInfo name='STD' value='63'/>
<seriesInfo name='RFC' value='3629'/>
<seriesInfo name='DOI' value='10.17487/RFC3629'/>
</reference>



<reference  anchor="RFC4648" target='https://www.rfc-editor.org/info/rfc4648'>
<front>
<title>The Base16, Base32, and Base64 Data Encodings</title>
<author initials='S.' surname='Josefsson' fullname='S. Josefsson'><organization /></author>
<date year='2006' month='October' />
<abstract><t>This document describes the commonly used base 64, base 32, and base 16 encoding schemes.  It also discusses the use of line-feeds in encoded data, use of padding in encoded data, use of non-alphabet characters in encoded data, use of different encoding alphabets, and canonical encodings.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='4648'/>
<seriesInfo name='DOI' value='10.17487/RFC4648'/>
</reference>



<reference  anchor="RFC3864" target='https://www.rfc-editor.org/info/rfc3864'>
<front>
<title>Registration Procedures for Message Header Fields</title>
<author initials='G.' surname='Klyne' fullname='G. Klyne'><organization /></author>
<author initials='M.' surname='Nottingham' fullname='M. Nottingham'><organization /></author>
<author initials='J.' surname='Mogul' fullname='J. Mogul'><organization /></author>
<date year='2004' month='September' />
<abstract><t>This specification defines registration procedures for the message header fields used by Internet mail, HTTP, Netnews and other applications.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t></abstract>
</front>
<seriesInfo name='BCP' value='90'/>
<seriesInfo name='RFC' value='3864'/>
<seriesInfo name='DOI' value='10.17487/RFC3864'/>
</reference>



<reference  anchor="RFC5895" target='https://www.rfc-editor.org/info/rfc5895'>
<front>
<title>Mapping Characters for Internationalized Domain Names in Applications (IDNA) 2008</title>
<author initials='P.' surname='Resnick' fullname='P. Resnick'><organization /></author>
<author initials='P.' surname='Hoffman' fullname='P. Hoffman'><organization /></author>
<date year='2010' month='September' />
<abstract><t>In the original version of the Internationalized Domain Names in Applications (IDNA) protocol, any Unicode code points taken from user input were mapped into a set of Unicode code points that &quot;made sense&quot;, and then encoded and passed to the domain name system (DNS). The IDNA2008 protocol (described in RFCs 5890, 5891, 5892, and 5893) presumes that the input to the protocol comes from a set of &quot;permitted&quot; code points, which it then encodes and passes to the DNS, but does not specify what to do with the result of user input.  This document describes the actions that can be taken by an implementation between receiving user input and passing permitted code points to the new IDNA protocol.  This document is not an Internet Standards Track  specification; it is published for informational purposes.</t></abstract>
</front>
<seriesInfo name='RFC' value='5895'/>
<seriesInfo name='DOI' value='10.17487/RFC5895'/>
</reference>



<reference  anchor="RFC7034" target='https://www.rfc-editor.org/info/rfc7034'>
<front>
<title>HTTP Header Field X-Frame-Options</title>
<author initials='D.' surname='Ross' fullname='D. Ross'><organization /></author>
<author initials='T.' surname='Gondrom' fullname='T. Gondrom'><organization /></author>
<date year='2013' month='October' />
<abstract><t>To improve the protection of web applications against clickjacking, this document describes the X-Frame-Options HTTP header field, which declares a policy, communicated from the server to the client browser, regarding whether the browser may display the transmitted content in frames that are part of other web pages.</t></abstract>
</front>
<seriesInfo name='RFC' value='7034'/>
<seriesInfo name='DOI' value='10.17487/RFC7034'/>
</reference>


<reference anchor="UTS46" target="http://unicode.org/reports/tr46/">
  <front>
    <title>Unicode IDNA Compatibility Processing</title>
    <author initials="M." surname="Davis" fullname="Mark Davis">
      <organization></organization>
    </author>
    <author initials="M." surname="Suignard" fullname="Michel Suignard">
      <organization></organization>
    </author>
    <date year="2016" month="June"/>
  </front>
  <seriesInfo name="UNICODE" value="Unicode Technical Standards # 46"/>
</reference>
<reference anchor="CSRF" target="http://portal.acm.org/citation.cfm?id=1455770.1455782">
  <front>
    <title>Robust Defenses for Cross-Site Request Forgery</title>
    <author initials="A." surname="Barth" fullname="Adam Barth">
      <organization></organization>
    </author>
    <author initials="C." surname="Jackson">
      <organization></organization>
    </author>
    <author initials="J." surname="Mitchell">
      <organization></organization>
    </author>
    <date year="2008" month="October"/>
  </front>
  <seriesInfo name="DOI" value="10.1145/1455770.1455782"/>
  <seriesInfo name="ISBN" value="978-1-59593-810-7"/>
  <seriesInfo name="ACM" value="CCS '08: Proceedings of the 15th ACM conference on Computer and communications security (pages 75-88)"/>
</reference>
<reference anchor="Aggarwal2010" target="http://www.usenix.org/events/sec10/tech/full_papers/Aggarwal.pdf">
  <front>
    <title>An Analysis of Private Browsing Modes in Modern Browsers</title>
    <author initials="G." surname="Aggarwal">
      <organization></organization>
    </author>
    <author initials="E." surname="Burzstein">
      <organization></organization>
    </author>
    <author initials="C." surname="Jackson">
      <organization></organization>
    </author>
    <author initials="D." surname="Boneh">
      <organization></organization>
    </author>
    <date year="2010"/>
  </front>
</reference>
<reference anchor="app-isolation" target="http://www.collinjackson.com/research/papers/appisolation.pdf">
  <front>
    <title>App Isolation - Get the Security of Multiple Browsers with Just One</title>
    <author initials="E." surname="Chen" fullname="Eric Y. Chen">
      <organization></organization>
    </author>
    <author initials="J." surname="Bau" fullname="Jason Bau">
      <organization></organization>
    </author>
    <author initials="C." surname="Reis" fullname="Charles Reis">
      <organization></organization>
    </author>
    <author initials="A." surname="Barth" fullname="Adam Barth">
      <organization></organization>
    </author>
    <author initials="C." surname="Jackson" fullname="Collin Jackson">
      <organization></organization>
    </author>
    <date year="2011"/>
  </front>
</reference>
<reference anchor="prerendering" target="https://www.chromium.org/developers/design-documents/prerender">
  <front>
    <title>Chrome Prerendering</title>
    <author initials="C." surname="Bentzel" fullname="Chris Bentzel">
      <organization></organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>




<reference anchor="I-D.ietf-httpbis-cookie-alone">
<front>
<title>Deprecate modification of 'secure' cookies from non-secure origins</title>

<author initials='M' surname='West' fullname='Mike West'>
    <organization />
</author>

<date month='September' day='5' year='2016' />

<abstract><t>This document updates RFC6265 by removing the ability for a non- secure origin to set cookies with a 'secure' flag, and to overwrite cookies whose 'secure' flag is set.  This deprecation improves the isolation between HTTP and HTTPS origins, and reduces the risk of malicious interference.</t></abstract>

</front>

<seriesInfo name='Internet-Draft' value='draft-ietf-httpbis-cookie-alone-01' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-ietf-httpbis-cookie-alone-01.txt' />
</reference>



<reference anchor="I-D.ietf-httpbis-cookie-prefixes">
<front>
<title>Cookie Prefixes</title>

<author initials='M' surname='West' fullname='Mike West'>
    <organization />
</author>

<date month='February' day='23' year='2016' />

<abstract><t>This document updates RFC6265 by adding a set of restrictions upon the names which may be used for cookies with specific properties. These restrictions enable user agents to smuggle cookie state to the server within the confines of the existing "Cookie" request header syntax, and limits the ways in which cookies may be abused in a conforming user agent.</t></abstract>

</front>

<seriesInfo name='Internet-Draft' value='draft-ietf-httpbis-cookie-prefixes-00' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-ietf-httpbis-cookie-prefixes-00.txt' />
</reference>



<reference anchor="I-D.ietf-httpbis-cookie-same-site">
<front>
<title>Same-Site Cookies</title>

<author initials='M' surname='West' fullname='Mike West'>
    <organization />
</author>

<author initials='M' surname='Goodwin' fullname='Mark Goodwin'>
    <organization />
</author>

<date month='June' day='20' year='2016' />

<abstract><t>This document updates RFC6265 by defining a "SameSite" attribute which allows servers to assert that a cookie ought not to be sent along with cross-site requests.  This assertion allows user agents to mitigate the risk of cross-origin information leakage, and provides some protection against cross-site request forgery attacks.</t></abstract>

</front>

<seriesInfo name='Internet-Draft' value='draft-ietf-httpbis-cookie-same-site-00' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-ietf-httpbis-cookie-same-site-00.txt' />
</reference>




    </references>


<section anchor="changes" title="Changes">

<section anchor="draft-ietf-httpbis-rfc6265bis-00" title="draft-ietf-httpbis-rfc6265bis-00">

<t><list style="symbols">
  <t>Port <xref target="RFC6265"/> to Markdown. No (intentional) normative changes.</t>
</list></t>

</section>
<section anchor="draft-ietf-httpbis-rfc6265bis-01" title="draft-ietf-httpbis-rfc6265bis-01">

<t><list style="symbols">
  <t>Fixes to formatting caused by mistakes in the initial port to Markdown:  <list style="symbols">
      <t><eref target="https://github.com/httpwg/http-extensions/issues/243">https://github.com/httpwg/http-extensions/issues/243</eref></t>
      <t><eref target="https://github.com/httpwg/http-extensions/issues/246">https://github.com/httpwg/http-extensions/issues/246</eref></t>
    </list></t>
  <t>Addresses errata 3444 by updating the <spanx style="verb">path-value</spanx> and <spanx style="verb">extension-av</spanx>
grammar, errata 4148 by updating the <spanx style="verb">day-of-month</spanx>, <spanx style="verb">year</spanx>, and <spanx style="verb">time</spanx>
grammar, and errata 3663 by adding the requested note.
<eref target="https://www.rfc-editor.org/errata_search.php?rfc=6265">https://www.rfc-editor.org/errata_search.php?rfc=6265</eref></t>
  <t>Dropped <spanx style="verb">Cookie2</spanx> and <spanx style="verb">Set-Cookie2</spanx> from the IANA Considerations section:
<eref target="https://github.com/httpwg/http-extensions/issues/247">https://github.com/httpwg/http-extensions/issues/247</eref></t>
  <t>Merged the recommendations from <xref target="I-D.ietf-httpbis-cookie-alone"/>, removing
the ability for a non-secure origin to set cookies with a ‘secure’ flag, and
to overwrite cookies whose ‘secure’ flag is true.</t>
  <t>Merged the recommendations from <xref target="I-D.ietf-httpbis-cookie-prefixes"/>, adding
<spanx style="verb">__Secure-</spanx> and <spanx style="verb">__Host-</spanx> cookie name prefix processing instructions.</t>
</list></t>

</section>
<section anchor="draft-ietf-httpbis-rfc6265bis-02" title="draft-ietf-httpbis-rfc6265bis-02">

<t><list style="symbols">
  <t>Merged the recommendations from <xref target="I-D.ietf-httpbis-cookie-same-site"/>, adding
support for the <spanx style="verb">SameSite</spanx> attribute.</t>
  <t>Closed a number of editorial bugs:  <list style="symbols">
      <t>Clarified address bar behavior for SameSite cookies:
<eref target="https://github.com/httpwg/http-extensions/issues/201">https://github.com/httpwg/http-extensions/issues/201</eref></t>
      <t>Added the word “Cookies” to the document’s name:
<eref target="https://github.com/httpwg/http-extensions/issues/204">https://github.com/httpwg/http-extensions/issues/204</eref></t>
      <t>Clarified that the <spanx style="verb">__Host-</spanx> prefix requires an explicit <spanx style="verb">Path</spanx> attribute:
<eref target="https://github.com/httpwg/http-extensions/issues/222">https://github.com/httpwg/http-extensions/issues/222</eref></t>
      <t>Expanded the options for dealing with third-party cookies to include a
brief mention of partitioning based on first-party:
<eref target="https://github.com/httpwg/http-extensions/issues/248">https://github.com/httpwg/http-extensions/issues/248</eref></t>
      <t>Noted that double-quotes in cookie values are part of the value, and are
not stripped: <eref target="https://github.com/httpwg/http-extensions/issues/295">https://github.com/httpwg/http-extensions/issues/295</eref></t>
      <t>Fixed the “site for cookies” algorithm to return something that makes
sense: <eref target="https://github.com/httpwg/http-extensions/issues/302">https://github.com/httpwg/http-extensions/issues/302</eref></t>
    </list></t>
</list></t>

</section>
<section anchor="draft-ietf-httpbis-rfc6265bis-03" title="draft-ietf-httpbis-rfc6265bis-03">

<t><list style="symbols">
  <t>Clarified handling of invalid SameSite values:
<eref target="https://github.com/httpwg/http-extensions/issues/389">https://github.com/httpwg/http-extensions/issues/389</eref></t>
  <t>Reflect widespread implementation practice of including a cookie’s
<spanx style="verb">host-only-flag</spanx> when calculating its uniqueness:
<eref target="https://github.com/httpwg/http-extensions/issues/199">https://github.com/httpwg/http-extensions/issues/199</eref></t>
  <t>Introduced an explicit “None” value for the SameSite attribute:
<eref target="https://github.com/httpwg/http-extensions/issues/788">https://github.com/httpwg/http-extensions/issues/788</eref></t>
</list></t>

</section>
</section>
<section numbered="false" anchor="acknowledgements" title="Acknowledgements">
<t>This document is a minor update of RFC 6265, adding small features, and
aligning the specification with the reality of today’s deployments. Here,
we’re standing upon the shoulders of giants.</t>

</section>


  </back>

<!-- ##markdown-source:
H4sIAO6zxFwAA929aXPbSJYo+j1/BYIVE5b6ktTqTdVVc1VeujTX27XkWzMx
MdECSVBCmwTYACiZ5fD8mvdP3h97Z808CYDyUq4XL15NTJsigVxOnjz7MhqN
XJM3i+wkGTwpy/d5Vp8kv15cvEnOm7TJkpdpkV5ly6xokpfZ9Dot8no5cLNy
WqRLeGdWpfNmlGfNfHTdNKtJXo+q+fTB4YP7+HH/yM1gkJPk49PTi2ef3BT+
uCqrzUlSNzNXTupykTU4Ib7gXL6qTpJVld0/evjoolrXzeH+/uP9Q5dWWXqS
nK5WixxGyMuiTtJilrzN0sXoIl9m7ras3l9V5XrFS3er/CT5z6acDhP4n7yY
weqHSV1WTZXNa/i0WcqHpsqn8NO0XK5S+YBbhZ/yYpEX2X+5uoGp/p4uygK2
scnq5Ie/O5eum+uyOnEjl8CDsP7TcfJLWjXX8DfD5XSWLv1XZXUFcPudln6S
/K0srxbZMDkrpvDbuoK1Iujqk72929vbcQpvTvDFMSxmL0zxcpz8ltWNn+Fl
/j7Tb+6aIFum+eIkWb6/rZv/eUU/4cjtqZcw3C2MNoax9pwrymoJw91kJ/Dg
2+dPDvaPjvXjweGRfDw8OHgsH4+OH+/jR1jMTVZV+YzBRd8ofp0VTVYVtMp0
kf+eF1fJ0xKWVySvYEs17DM+5J2zp69Odwc0Rp1VgJp5MS95Fpr0JMFp6W/G
M0CYI8Q6/EYPiZ8eyb8CzTfj5Hm6aAABCBTxL7+W8/kyLeLv4YiflHWTLRYl
D18AqM+zLPn4MZ8V6WiZX1W07k+fknlZwe9J9mG1SHm/ye31Jmmus8QDNgEU
zKqsmGaApPi0XodZUq+yaT4XMCR5nRRZNstmY4b08UOGNHy8f+hP5f4j/+2D
4/v67cPDo/3w8QA/vjs/PX9ydnYSncyTEsZPnlynFVyDrIJ9NclolDwcTfIm
OV0C7KewwnO8C2kFD8LjtMkzOA/aD6yTThcpxFW27chOX52fnST/fjQ+Nmd2
8PjRg54Di3Har+GVoI9fTA0T17CPdZPBm8+fXTz5VfaWVldZEzB8njXT6zHC
dnx7nTa3V4zqBgzP8YnOUhRzFAtuYBX/C24KHp78JHe+KLK+X+OdvCx/zxeL
FH779eLli/6lXjfLxZ0rxVfvXugZoHE+fV+X8RrPYHnx91tpx7g76Pk4eQO0
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
QdNuOXY7rX083HCx59DFLJKzN0k6m2ECnYRxki+NyR5+GhHyBPMVhZR/b/PV
lDva85Y5oJ0mYl88zyxUC7nWusr5Z+FT9PmOKHT0TVLspj5kSD773bLlCtut
N+J7bLdYyLtjqt2dhvoHdmNPeR00nu9+BC9gwVs6iF0TW+G3kIvLnCLpibVr
tg4+9i8fjjDs/V+jsHdYWWtYSgrurFFsYb5VHiXSp9gAD2BNbTy6K8naaQal
dKzHNcI7QvA1wdy8KyD09TE5sKqD9OYVMUA1jMyd8P4hRrYBWtgfSbLo0RaQ
U8fSv5/HAwB4flyI5K5JaW1fNrHI/q95sSQcdCLJ/GpacWcBPGsYuqSEIQ8W
X1qeD6rCYhIjqpwQFkaOAD1zvgd4adt03VzeLVTdbaWAtSHrdpzQPsPMHpN2
JkfWDp3XPU0gqdObNoU5evzogbB2Tz98vAfT8AhDGfuvORLxtrREh32YPk46
JHOIW2rcvzGilxzI16Ym+HsQMmOyTmuLaw/pcNF5/aEpW2hj54zO4S6m0pkY
l8e0J74M7F6hGFqJ8qX2ITbs961GWVOwRSco22AnRfeawGRAQwopp14k92ok
Lvfq0BGm05QFI4ngJIEmT5tWDFvogMINULAVSicCexhok7b54kznUt7S/q5+
tZ4dRFuW2CG9Wfr8jm/PstuOJwqsTpM0Lz0cLlFOvQzDXwqbAyp2KQNe+n1R
XxpsEng51FRWM1L/bROqToIQgiNEZyfAPa6usnbIBCdQLTaMEOgbpJ83KxIb
5Uft1RCVThY5Ipmk1a7wCeTWl7xP4NXdHfWeVJQDLqGybApQiIpPr1aZmaZh
TLpUoaDb1adswTS0yAnmG1lsP67pFFugfz9ogfZE4xZ6n9k61ahaoMMf5XtO
ByFLDrrZ0TbtX4YT0UwJ4ymOMY9aFzCoTlQj4BiJ0YQam/okiY8/aPSEvby4
buzpPsvr1SLdaFesbafu2zoVlDUsIZaSGuE87nCiDEnpOFLtqVsVSnXzEPkV
ylD0EJFxTmJNJ4CdJvigNNExGphSVlqhZIOhmCKe+aDL22yCsOfIoF5MUYHH
0yQbcsRUlDM+NOJB4OKIQZOfG3MzFtgjnV6QBuJSHYmscSklj42T37J7IJmp
3kyRLNJNLHOmeVxMfkJj6/hwtjebG8K2tavAirz/JzSFjrQVI5tr26yKAMer
CCUXBQTU49ksZ0tjvJqWUmSSbwtCTkO5cdosTtNzSfw3y9vaPbC+l7SaDVJt
JJ9VkE6n5RpgpRxjoLXWRrLCegoad5WXsOHoPnmF3/lWMfvUszY5Tb4Bbj0t
G00nZ1REZNtUXUp36/d0z0OIBBpSIrlcXhuD095TS157loYT9K6aDoKFea/L
/o1YXeqpR7JzqWu6/AJ2F83lApmXGiNpl1YTs24vZNeogJe4M78GpfktHMAD
DAuFY2qjzb1abETbroxlY/gUg9/PJ5QBGUu0HhZn8IDb37NFY1t7Sk9U1HOD
Vm7uc9geXzqdkfynh2q5occZWmxKrfxUF6LkhQA8i3eX7bV+zZUTNkqqM453
CUe+vIxOob4MfmNe6HaQ0tsGlPp3G3zePPIFYNQxdBoDOhxBdFtdVOhM2Nsj
UEwoLTHBL8dizB0jeWmi5+JZkeLLRhMjDvcD7XJ57l9qebw8OausOEvxjRiQ
T/kVaIWfrukPLyW0nqdMP2LhABh6kd/DwMj3Pp3+Lu4kVfR5gWOO3UKzAhlJ
KVYBUyqIWp23mp72tDnVQpLLdOOyDyCKUC7nzNfawUyyqwp9S8NQHqXYBNKh
/a8xSI0Km6BcfcI2wIzzeklDluyuul4vfXESXtUSpY6J5LUKvlGwqSX6Yv3B
5GWMNRWj71K8uZQTjIFbaaFdyYh1orgg3NM1GK+HQ2prWsk61otTGPZH4cEq
LIWUb+5Lp5llT33HXQpr4y64HtQ/+Ia8I/h5xE1yLT49bTXslVDZnC1pqcaj
tJ7Co6ZcHErXLjKfbUtNa0Jkr9c3g6NDUg46I+5gEvcl5jFWzTknYl8O3eW/
v3yB8cgyEHaUnWdwc3d24SN82BXNQ0DTwyJT6XF2J/sHYJ7b/sE1YiJig9+k
r/YaUCFFg8wU2PRpLVmY/1zDwC7KxOQoToM/pVo30OcLhKi9mIG0OuFCOB5L
enamAZhtQkQlVFPqbOgLcvCYINTfZKATGccb79pXUux/D7SHKsuMZNFp4wwi
Bi/1qwQMF+uRf0TACFqrrMNaJ+6gvocRBwxcFrlgGMm3j26zQ09gw/yW7d+t
LdvIpY8fuxodBQ5bPteabStPE3B0WVXLNSESiLIs1X9/4HSOiGpzxWhLxpFO
kIUWbXsLvsxDkWQ3KGxoih+SkiYjHZM9YULiUVD3ifgYL8wVNZBsUrwbRqxz
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
F1Ty3rX6GhUxSryZJ1fYwQzY3f8DKY/99LBSAQA=

-->

</rfc>

