summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc8674.txt
diff options
context:
space:
mode:
Diffstat (limited to 'doc/rfc/rfc8674.txt')
-rw-r--r--doc/rfc/rfc8674.txt352
1 files changed, 352 insertions, 0 deletions
diff --git a/doc/rfc/rfc8674.txt b/doc/rfc/rfc8674.txt
new file mode 100644
index 0000000..886cec9
--- /dev/null
+++ b/doc/rfc/rfc8674.txt
@@ -0,0 +1,352 @@
+
+
+
+
+Independent Submission M. Nottingham
+Request for Comments: 8674 December 2019
+Category: Informational
+ISSN: 2070-1721
+
+
+ The "safe" HTTP Preference
+
+Abstract
+
+ This specification defines a preference for HTTP requests that
+ expresses a desire to avoid objectionable content, according to the
+ definition of that term by the origin server.
+
+ This specification does not define a precise semantic for "safe".
+ Rather, the term is interpreted by the server and within the scope of
+ each web site that chooses to act upon this information.
+
+ Support for this preference by clients and servers is optional.
+
+Status of This Memo
+
+ This document is not an Internet Standards Track specification; it is
+ published for informational purposes.
+
+ This is a contribution to the RFC Series, independently of any other
+ RFC stream. The RFC Editor has chosen to publish this document at
+ its discretion and makes no statement about its value for
+ implementation or deployment. Documents approved for publication by
+ the RFC Editor are not candidates for any level of Internet Standard;
+ see Section 2 of RFC 7841.
+
+ Information about the current status of this document, any errata,
+ and how to provide feedback on it may be obtained at
+ https://www.rfc-editor.org/info/rfc8674.
+
+Copyright Notice
+
+ Copyright (c) 2019 IETF Trust and the persons identified as the
+ document authors. All rights reserved.
+
+ This document is subject to BCP 78 and the IETF Trust's Legal
+ Provisions Relating to IETF Documents
+ (https://trustee.ietf.org/license-info) in effect on the date of
+ publication of this document. Please review these documents
+ carefully, as they describe your rights and restrictions with respect
+ to this document.
+
+Table of Contents
+
+ 1. Introduction
+ 1.1. Notational Conventions
+ 2. The "safe" Preference
+ 3. Security Considerations
+ 4. IANA Considerations
+ 5. References
+ 5.1. Normative References
+ 5.2. Informative References
+ Appendix A. Sending the "safe" Preference from Web Browsers
+ Appendix B. Supporting the "safe" Preference on Web Sites
+ Acknowledgements
+ Author's Address
+
+1. Introduction
+
+ Many web sites have a "safe" mode to assist those who don't want to
+ be exposed (or have their children exposed) to content to which they
+ might object.
+
+ However, that goal is often difficult to achieve because of the need
+ to go to every web site that might be used and navigate to the
+ appropriate page (possibly creating an account along the way) to get
+ a cookie [RFC6265] set in the browser, for each browser on every
+ device used.
+
+ A more manageable approach is for the browser to proactively indicate
+ a preference for safe content. A user agent that supports doing so
+ (whether it be an individual browser or through an operating system
+ HTTP library) need only be configured once to ensure that the
+ preference is advertised to a set of sites, or even all sites.
+
+ This specification defines how to declare this desire in requests as
+ an HTTP Preference [RFC7240].
+
+ Note that this specification does not define what content might be
+ considered objectionable, so the concept of "safe" is not precisely
+ defined. Rather, the term is interpreted by the server and within
+ the scope of each web site that chooses to act upon this information.
+
+ That said, the intent is to allow end users (or those acting on their
+ behalf) to express a desire to avoid content that is considered
+ objectionable within the cultural context of that site; usually (but
+ not always), the objectionable content is content unsuitable for
+ minors. The safe preference is not intended to be used for other
+ purposes.
+
+ Furthermore, sending the preference does not guarantee that the web
+ site will use it or that it will apply a concept of "objectionable"
+ that is consistent with the requester's views. As such, its effect
+ can be described as "best effort" and not to be relied upon. In
+ other words, sending the preference is no more reliable than going to
+ each web site and manually selecting a safe mode, but it is
+ considerably easier.
+
+ It is also important to note that the safe preference is not a
+ reliable indicator that the end user is a child; other users might
+ have a desire for unobjectionable content, and some children might
+ browse without the preference being set.
+
+ Note also that the cultural context applies to the hosting location
+ of a site, the content provider, and the source of the content. It
+ cannot be guaranteed that a user agent and origin server will have
+ the same view of the concept of what is objectionable.
+
+ Simply put, it is a statement by (or on behalf of) the end user
+ indicating that "if your site has a safe setting, this user is hereby
+ opting into that, according to your definition of the term."
+
+ The mechanism described in this document does not have IETF consensus
+ and is not a standard. It is a widely deployed approach that has
+ turned out to be useful and is presented here so that server and
+ browser implementations can have a common understanding of how it
+ operates.
+
+ This mechanism was presented for publication as an IETF Proposed
+ Standard but was not approved for publication by the IESG because of
+ concerns that included the vagueness of the meaning of "safe", the
+ ability of a proxy to insert the hint outside of a user's control,
+ the fact that there was no way to know whether the hint was or was
+ not applied to the response returned by the server, and the
+ possibility that the use of this preference may incentivize increased
+ censorship and/or targeting of minors.
+
+ The specification was updated to address those concerns, but the IESG
+ did not approve progressing this document as an IETF Proposed
+ Standard. As a result, it has been published in the Independent
+ Stream.
+
+1.1. Notational Conventions
+
+ The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
+ "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
+ "OPTIONAL" in this document are to be interpreted as described in
+ BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all
+ capitals, as shown here.
+
+2. The "safe" Preference
+
+ When present in a request, the safe preference indicates that the
+ user prefers that the origin server not respond with content that is
+ designated as objectionable, according to the origin server's
+ definition of the concept.
+
+ For example, this is a request that includes the safe preference:
+
+ GET /foo.html HTTP/1.1
+ Host: www.example.org
+ User-Agent: ExampleBrowser/1.0
+ Prefer: safe
+
+ Typically, user agents that emit the safe preference will include it
+ in all requests with the "https" URI scheme, although some might
+ expose finer-grained controls over when it is sent; this ensures that
+ the preference is available to the applicable resources. User agents
+ MUST NOT emit the safe preference on requests with the "http" URI
+ scheme (see Section 3). See Appendix A for more information about
+ configuring the set of resources the safe preference is sent to.
+
+ The safe preference MAY be implemented in common HTTP libraries
+ (e.g., an operating system might choose to insert the preference in
+ requests based upon system-wide configuration).
+
+ Origin servers that utilize the safe preference ought to document
+ that they do so, along with the criteria that they use to denote
+ objectionable content. If a server has more fine-grained degrees of
+ safety, it SHOULD select a reasonable default to use and document
+ that; it MAY use additional mechanisms (e.g., cookies [RFC6265]) to
+ fine-tune.
+
+ A response corresponding to the request above might have headers that
+ look like this:
+
+ HTTP/1.1 200 OK
+ Transfer-Encoding: chunked
+ Content-Type: text/html
+ Preference-Applied: safe
+ Server: ExampleServer/2.0
+ Vary: Prefer
+
+ Here, the Preference-Applied response header [RFC7240] indicates that
+ the site has applied the preference. Servers are not required to
+ send Preference-Applied (even when they have applied the preference)
+ but are encouraged to where possible.
+
+ Note that the Vary response header needs to be sent if the response
+ is cacheable and might change depending on the value of the Prefer
+ header. This is not only true for those responses that are safe but
+ also the default unsafe response.
+
+ See Section 4.1 of [RFC7234] for more information about the
+ interaction between the Vary header field and web caching.
+
+ See Appendix B for additional advice specific to web servers wishing
+ to use the safe preference.
+
+3. Security Considerations
+
+ The safe preference is not a secure mechanism; it can be inserted or
+ removed by intermediaries with access to the request stream (e.g.,
+ for "http" URLs). Therefore, it is prohibited from being included in
+ requests with the "http" scheme.
+
+ Its presence reveals information about the user, which may be of
+ assistance in fingerprinting the user by sites and other entities in
+ the network. This information provides insight into the preferences
+ of the user and might be used to make assumptions about user; thus,
+ it could be used to identify categories of users for purposes such as
+ targeting (including advertising and identification of minors).
+ Therefore, user agents SHOULD NOT include it in requests when the
+ user has expressed a desire to avoid such attacks (e.g., some forms
+ of private mode browsing).
+
+ By its nature, including the safe preference in requests does not
+ ensure that all content will actually be safe; content is safe only
+ when servers elect to honor it.
+
+ Even then, a malicious server might adapt content so that it is even
+ less safe (by some definition of the word). As such, this mechanism
+ on its own is not enough to ensure that only safe content is seen;
+ those who wish to ensure that will need to combine its use with other
+ techniques (e.g., content filtering).
+
+ Furthermore, the server and user may have differing ideas regarding
+ the semantics of "safe". As such, the safety of the user's
+ experience when browsing from site to site, as well as over time,
+ might (and probably will) change.
+
+4. IANA Considerations
+
+ Per this specification, IANA has registered the following entry in
+ the "HTTP Preferences" registry [RFC7240]:
+
+ * Preference: safe
+
+ * Description: Indicates that safe (i.e., unobjectionable) content
+ is preferred.
+
+ * Reference: RFC 8674
+
+5. References
+
+5.1. Normative References
+
+ [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
+ Requirement Levels", BCP 14, RFC 2119,
+ DOI 10.17487/RFC2119, March 1997,
+ <https://www.rfc-editor.org/info/rfc2119>.
+
+ [RFC7234] Fielding, R., Ed., Nottingham, M., Ed., and J. Reschke,
+ Ed., "Hypertext Transfer Protocol (HTTP/1.1): Caching",
+ RFC 7234, DOI 10.17487/RFC7234, June 2014,
+ <https://www.rfc-editor.org/info/rfc7234>.
+
+ [RFC7240] Snell, J., "Prefer Header for HTTP", RFC 7240,
+ DOI 10.17487/RFC7240, June 2014,
+ <https://www.rfc-editor.org/info/rfc7240>.
+
+ [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
+ 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
+ May 2017, <https://www.rfc-editor.org/info/rfc8174>.
+
+5.2. Informative References
+
+ [RFC6265] Barth, A., "HTTP State Management Mechanism", RFC 6265,
+ DOI 10.17487/RFC6265, April 2011,
+ <https://www.rfc-editor.org/info/rfc6265>.
+
+Appendix A. Sending the "safe" Preference from Web Browsers
+
+ As discussed in Section 2, there are many possible ways for the safe
+ preference to be generated. One possibility is for a web browser to
+ allow its users to configure the preference to be sent.
+
+ When doing so, it is important not to misrepresent the preference as
+ binding to web sites. For example, an appropriate setting might be a
+ checkbox with wording such as:
+
+ [] Request safe content from web sites
+
+ along with further information available upon request.
+
+ Browsers might also allow the safe preference to be locked to prevent
+ modification without administrative access or a passcode.
+
+ Note that this specification does not require browsers to send the
+ safe preference on all requests, although that is one possible
+ implementation; alternate implementation strategies include
+ blacklists and whitelists.
+
+Appendix B. Supporting the "safe" Preference on Web Sites
+
+ Web sites that allow configuration of a safe mode (for example, using
+ a cookie) can add support for the safe preference incrementally;
+ since the preference will not be supported by all clients
+ immediately, it is necessary to have another way to configure it.
+
+ When honoring the safe preference, it is important that it not be
+ possible to disable it through the web site's interface, since the
+ safe preference may be configured and locked down by the browser or
+ computer's administrator (e.g., a parent). If the site has such a
+ means of configuration (e.g., stored user preferences) and the safe
+ preference is received in a request, the "safer" interpretation ought
+ to be used.
+
+ The appropriate level of safety is a site-specific decision. When
+ selecting it, sites ought to bear in mind that disabling the
+ preference might be considerably more onerous than using other means,
+ especially if the preference is generated based upon the operating
+ system configuration.
+
+ Sites might offer different levels of safety through web
+ configuration; they will need to either inform their users of what
+ level the safe hint corresponds to or provide them with some means of
+ adjusting it.
+
+ If users express a wish to disable safe mode, the site can remind
+ them that the safe preference is being sent and ask them to consult
+ their administrator (since the safe preference might be set by a
+ locked-down operating system configuration).
+
+ As explained in Section 2, responses that change based upon the
+ presence of the safe preference need to either carry the "Vary:
+ Prefer" response header field or be uncacheable by shared caches
+ (e.g., with a "Cache-Control: private" response header field). This
+ is to avoid an unsafe cached response being served to a client that
+ prefers safe content (or vice versa).
+
+Acknowledgements
+
+ Thanks to Alissa Cooper, Ilya Grigorik, Emma Llanso, Jeff Hughes,
+ Lorrie Cranor, Doug Turner, and Dave Crocker for their comments.
+
+Author's Address
+
+ Mark Nottingham
+
+ Email: mnot@mnot.net
+ URI: https://www.mnot.net/