mirror of
https://github.com/offen/analyticstxt.git
synced 2024-11-22 09:00:29 +01:00
Script updating gh-pages from b8c2114
. [ci skip]
This commit is contained in:
commit
6fa3e10dcb
3
.gitignore
vendored
Normal file
3
.gitignore
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
lib
|
||||||
|
venv
|
||||||
|
.refcache
|
0
archive.json
Normal file
0
archive.json
Normal file
2190
draft-ring-analyticstxt-02/draft-ring-analyticstxt.html
Normal file
2190
draft-ring-analyticstxt-02/draft-ring-analyticstxt.html
Normal file
File diff suppressed because it is too large
Load Diff
829
draft-ring-analyticstxt-02/draft-ring-analyticstxt.txt
Normal file
829
draft-ring-analyticstxt-02/draft-ring-analyticstxt.txt
Normal file
@ -0,0 +1,829 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Network Working Group F. Ring
|
||||||
|
Internet-Draft H. Niefeld
|
||||||
|
Intended status: Informational Offen
|
||||||
|
Expires: 19 February 2022 18 August 2021
|
||||||
|
|
||||||
|
|
||||||
|
A File Format for the Discoverable Use of Analytics
|
||||||
|
draft-ring-analyticstxt-latest
|
||||||
|
|
||||||
|
Abstract
|
||||||
|
|
||||||
|
Internet privacy has become an important feature for users of
|
||||||
|
websites and services. This document proposes a way for websites and
|
||||||
|
services to declare and disclose their usage of analytics and
|
||||||
|
tracking software. analytics.txt aims to be an elaborate file format
|
||||||
|
that describes the privacy related characteristics of analytics and
|
||||||
|
tracking software in a non-biased way. An analytics.txt file is
|
||||||
|
understandable for a non-technical audience, while also useful for
|
||||||
|
the automated consumption by tools and software.
|
||||||
|
|
||||||
|
Discussion Venues
|
||||||
|
|
||||||
|
This note is to be removed before publishing as an RFC.
|
||||||
|
|
||||||
|
Source for this draft and an issue tracker can be found at
|
||||||
|
https://github.com/offen/analyticstxt.
|
||||||
|
|
||||||
|
Status of This Memo
|
||||||
|
|
||||||
|
This Internet-Draft is submitted in full conformance with the
|
||||||
|
provisions of BCP 78 and BCP 79.
|
||||||
|
|
||||||
|
Internet-Drafts are working documents of the Internet Engineering
|
||||||
|
Task Force (IETF). Note that other groups may also distribute
|
||||||
|
working documents as Internet-Drafts. The list of current Internet-
|
||||||
|
Drafts is at https://datatracker.ietf.org/drafts/current/.
|
||||||
|
|
||||||
|
Internet-Drafts are draft documents valid for a maximum of six months
|
||||||
|
and may be updated, replaced, or obsoleted by other documents at any
|
||||||
|
time. It is inappropriate to use Internet-Drafts as reference
|
||||||
|
material or to cite them other than as "work in progress."
|
||||||
|
|
||||||
|
This Internet-Draft will expire on 19 February 2022.
|
||||||
|
|
||||||
|
Copyright Notice
|
||||||
|
|
||||||
|
Copyright (c) 2021 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. Code Components
|
||||||
|
extracted from this document must include Simplified BSD License text
|
||||||
|
as described in Section 4.e of the Trust Legal Provisions and are
|
||||||
|
provided without warranty as described in the Simplified BSD License.
|
||||||
|
|
||||||
|
Table of Contents
|
||||||
|
|
||||||
|
1. Introduction
|
||||||
|
1.1. Motivation
|
||||||
|
1.2. Scope of this proposal
|
||||||
|
1.2.1. About providing a human readable format
|
||||||
|
1.3. Definition of the term "analytics" in the scope of this
|
||||||
|
document
|
||||||
|
1.4. Verifying the provided information
|
||||||
|
1.4.1. Non-biased
|
||||||
|
1.4.2. Non-canonical
|
||||||
|
2. Conventions and Definitions
|
||||||
|
3. Specification
|
||||||
|
3.1. Comments
|
||||||
|
3.2. Line Separators
|
||||||
|
3.3. Extensibility
|
||||||
|
3.4. Field Definitions
|
||||||
|
3.4.1. Author
|
||||||
|
3.4.2. Collects
|
||||||
|
3.4.3. Stores
|
||||||
|
3.4.4. Uses
|
||||||
|
3.4.5. Allows
|
||||||
|
3.4.6. Retains
|
||||||
|
3.4.7. Honors
|
||||||
|
3.4.8. Tracks
|
||||||
|
3.4.9. Varies
|
||||||
|
3.4.10. Shares
|
||||||
|
3.4.11. Implements
|
||||||
|
3.4.12. Deploys
|
||||||
|
3.5. Examples of analytics.txt files
|
||||||
|
3.5.1. A site using analytics
|
||||||
|
3.5.2. Specifying required fields only
|
||||||
|
3.5.3. A site not using any analytics
|
||||||
|
4. Location of the analytics.txt file
|
||||||
|
4.1. Alternatives
|
||||||
|
4.1.1. link Tag
|
||||||
|
4.1.2. HTTP Header
|
||||||
|
4.2. Precedence
|
||||||
|
4.3. Scope of a file
|
||||||
|
5. Security Considerations
|
||||||
|
5.1. Incorrect or stale information
|
||||||
|
5.2. Spam
|
||||||
|
5.3. Multi-user environments
|
||||||
|
6. IANA Considerations
|
||||||
|
6.1. Well-Known URIs registry
|
||||||
|
7. References
|
||||||
|
7.1. Normative References
|
||||||
|
7.2. Informative References
|
||||||
|
Appendix A. Acknowledgments
|
||||||
|
Authors' Addresses
|
||||||
|
|
||||||
|
1. Introduction
|
||||||
|
|
||||||
|
1.1. Motivation
|
||||||
|
|
||||||
|
User tracking and the utilization of analytics software on websites
|
||||||
|
has become a widely employed routine, visibly and invisibly affecting
|
||||||
|
the way the user facing internet works and behaves. Yet, there is no
|
||||||
|
well-defined way of accessing information about what software is
|
||||||
|
being used and what kind of data it is collecting in a standardized
|
||||||
|
way. Legislation can only ever cover a subset of the range of
|
||||||
|
existing technological implementations, creating incentives for
|
||||||
|
software to find workarounds, thus allowing them to hide their
|
||||||
|
presence from users. Automated audits are limited to aspects that
|
||||||
|
are possible to detect in clients, but cannot disclose other
|
||||||
|
important implementation details.
|
||||||
|
|
||||||
|
1.2. Scope of this proposal
|
||||||
|
|
||||||
|
This document defines a way to specify the privacy related
|
||||||
|
characteristics of analytics and tracking software. We aim for this
|
||||||
|
information to be consumable both by humans as well as software.
|
||||||
|
|
||||||
|
The file "analytics.txt" is not intended to replace the requirement
|
||||||
|
for complying with existing regulations, but supposed to give
|
||||||
|
insights beyond the scope of these regulations.
|
||||||
|
|
||||||
|
1.2.1. About providing a human readable format
|
||||||
|
|
||||||
|
A fundamental design goal of the "analytics.txt" format is to make
|
||||||
|
such a file human readable. While the percentage of consumers that
|
||||||
|
are actually human beings will likely be low - browser extensions or
|
||||||
|
search engines would be good examples of possible consumers - this
|
||||||
|
tenet can drive the specification into a direction where the format
|
||||||
|
will focus on providing information that is useful for human beings,
|
||||||
|
even when captured and processed further by other software.
|
||||||
|
|
||||||
|
1.3. Definition of the term "analytics" in the scope of this document
|
||||||
|
|
||||||
|
Analytics as referred to in this document involves the collection of
|
||||||
|
usage statistics in order to generate reports that can help the
|
||||||
|
providers of websites and services to better understand and optimize
|
||||||
|
their services towards real world user behavior. This can also
|
||||||
|
include measuring different content against different groups of
|
||||||
|
users.
|
||||||
|
|
||||||
|
1.4. Verifying the provided information
|
||||||
|
|
||||||
|
"analytics.txt" is designed to provide insights beyond what is
|
||||||
|
technically auditable from a client perspective. While some
|
||||||
|
characteristics could be determined automatically or manually at
|
||||||
|
client level, others won't, and will rely on implementors providing
|
||||||
|
correct information about what is happening at layers that are opaque
|
||||||
|
to users. This means consumers of an "analytics.txt" file will
|
||||||
|
implictly need to trust the implementor to provide correct
|
||||||
|
information, implicating two design goals for the format (technical
|
||||||
|
implications are discussed in Section 5.1).
|
||||||
|
|
||||||
|
1.4.1. Non-biased
|
||||||
|
|
||||||
|
All of the given datapoints are purely informational, there is no
|
||||||
|
right or wrong option to choose from, and the format will never
|
||||||
|
provide guidelines on how to assess or rate an "analytics.txt" file.
|
||||||
|
Based on this, implementors don't have strong incentives for
|
||||||
|
providing incorrect information, but choose implementation because
|
||||||
|
they are wishing to disclose information about their site that they
|
||||||
|
otherwise couldn't.
|
||||||
|
|
||||||
|
1.4.2. Non-canonical
|
||||||
|
|
||||||
|
An "analytics.txt" file should never be the canonical source of truth
|
||||||
|
for making automated decisions or ratings about a site. It is
|
||||||
|
supposed to be one of multiple signals that can be used for assessing
|
||||||
|
the behavior of a website, creating the possibility to connect and
|
||||||
|
compare the provided data with what has been surveyed using other
|
||||||
|
channels of information.
|
||||||
|
|
||||||
|
2. Conventions and Definitions
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
The term "implementors" refers to the providers of services and
|
||||||
|
websites that wish to use an analytics.txt file.
|
||||||
|
|
||||||
|
3. Specification
|
||||||
|
|
||||||
|
This document defines a text file format that can be used by
|
||||||
|
implementors to signal information about their usage of analytics
|
||||||
|
software to both users and software.
|
||||||
|
|
||||||
|
By convention, this file is called "analytics.txt". Its location and
|
||||||
|
scope are described in Section 4.
|
||||||
|
|
||||||
|
This text file contains multiple fields with different values. A
|
||||||
|
field contains a "name" which is the first part of a field all the
|
||||||
|
way up to the colon (for example: "Author:") and follows the syntax
|
||||||
|
defined for "field-name" in section 3.6.8 of [RFC5322]. Field names
|
||||||
|
are case-insensitive (as per section 2.3 of [RFC5234]). The "value"
|
||||||
|
comes after the field name and follows the syntax defined for
|
||||||
|
"unstructured" in section 3.2.5 of [RFC5322]. The file MAY also
|
||||||
|
contain blank lines and comments.
|
||||||
|
|
||||||
|
A field MUST always consist of a name and a value (for example:
|
||||||
|
"Author: Jane Doe jane.doe@example.com
|
||||||
|
(mailto:jane.doe@example.com)"). Each field MUST appear on its own
|
||||||
|
line. Unless specified otherwise by the field definition, multiple
|
||||||
|
values MUST be chained together for a single field (for example:
|
||||||
|
"Implements: gdpr, ccpa") using the "," character (%x2c). A field
|
||||||
|
MAY NOT appear multiple times.
|
||||||
|
|
||||||
|
Implementors SHOULD aim for authoring an analytics.txt file that is
|
||||||
|
easy to understand by non-technical audiences.
|
||||||
|
|
||||||
|
3.1. Comments
|
||||||
|
|
||||||
|
Any line beginning with the "#" (%x23) symbol MUST be interpreted as
|
||||||
|
a comment. The content of the comment may contain any ASCII or
|
||||||
|
Unicode characters in the %x21-7E and %x80-FFFFF ranges plus the tab
|
||||||
|
(%x09) and space (%x20) characters.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
# This is a comment
|
||||||
|
|
||||||
|
Implementors SHOULD make deliberate use of comments to make an
|
||||||
|
analytics.txt file more accessible for non-technical audiences.
|
||||||
|
|
||||||
|
3.2. Line Separators
|
||||||
|
|
||||||
|
Every line MUST end either with a carriage return and line feed
|
||||||
|
characters (CRLF / %x0D %x0A) or just a line feed character (LF /
|
||||||
|
%x0A).
|
||||||
|
|
||||||
|
3.3. Extensibility
|
||||||
|
|
||||||
|
Like many other formats and protocols, this format may need to be
|
||||||
|
extended over time to fit the ever-changing landscape of the
|
||||||
|
Internet. Special attention is required for defining the allowed
|
||||||
|
values in enumerations to ensure they are a. extendable and b. do not
|
||||||
|
become obsolete too quickly.
|
||||||
|
|
||||||
|
3.4. Field Definitions
|
||||||
|
|
||||||
|
Field names are case-insensitive, yet implementors SHOULD use the
|
||||||
|
capitalized style used in this document for consistency.
|
||||||
|
|
||||||
|
Field values are case-insensitive. Unless otherwise specified,
|
||||||
|
implementors MUST refer to the allowed values for a field given by
|
||||||
|
the specification.
|
||||||
|
|
||||||
|
3.4.1. Author
|
||||||
|
|
||||||
|
This REQUIRED field holds an OPTIONAL display name and a REQUIRED
|
||||||
|
email address ("name-addr") as per section 3.4 of [RFC5322] providing
|
||||||
|
information about a person or entity responsible for maintaining the
|
||||||
|
contents of the file. The field MUST contain a valid email address
|
||||||
|
which shall be used for inquiries about the correctness and additions
|
||||||
|
to the data provided in the file.
|
||||||
|
|
||||||
|
3.4.1.1. Example
|
||||||
|
|
||||||
|
Author: Jane Doe <jane.doe@example.com>
|
||||||
|
|
||||||
|
3.4.2. Collects
|
||||||
|
|
||||||
|
This REQUIRED multi-value field indicates which potentially privacy
|
||||||
|
relevant user specific data is being collected or used in session
|
||||||
|
identification or other procedures. These values MUST also be
|
||||||
|
specified if a property is not persisted as-is, but stored or
|
||||||
|
processed in a hashed and/or combined form. Some of the allowed
|
||||||
|
values overlap to a certain extent, e.g. a User Agent string might be
|
||||||
|
used in a Browser Fingerprint.
|
||||||
|
|
||||||
|
3.4.2.1. Allowed values
|
||||||
|
|
||||||
|
3.4.2.1.1. none
|
||||||
|
|
||||||
|
No analytics data is collected at all. This value MUST NOT be used
|
||||||
|
in conjunction with other values.
|
||||||
|
|
||||||
|
3.4.2.1.2. url
|
||||||
|
|
||||||
|
The URL of a visit, including its path, is collected and used. This
|
||||||
|
MUST also be specified in case URLs are stripped of certain
|
||||||
|
parameters or pseudonymized before being stored.
|
||||||
|
|
||||||
|
3.4.2.1.3. time
|
||||||
|
|
||||||
|
The time of visit is collected.
|
||||||
|
|
||||||
|
3.4.2.1.4. ip-address
|
||||||
|
|
||||||
|
The request IP address is being used.
|
||||||
|
|
||||||
|
3.4.2.1.5. geo-location
|
||||||
|
|
||||||
|
Geographic location of users is determined and used. This could for
|
||||||
|
example be derived from the request IP, or from using browser APIs.
|
||||||
|
|
||||||
|
3.4.2.1.6. user-agent
|
||||||
|
|
||||||
|
Information about the utilized User Agent is being collected.
|
||||||
|
|
||||||
|
3.4.2.1.7. fingerprint
|
||||||
|
|
||||||
|
Browser Fingerprinting is used. Such mechanisms usually try to
|
||||||
|
compute a unique identifier from properties of the host Operating
|
||||||
|
System, allowing them to re-identify users without having to persist
|
||||||
|
an identifier.
|
||||||
|
|
||||||
|
3.4.2.1.8. device-type
|
||||||
|
|
||||||
|
The user's device type (e.g. mobile / tablet / desktop) is being
|
||||||
|
determined and collected. The categories and rules for this
|
||||||
|
distinction might be different for different software solutions.
|
||||||
|
|
||||||
|
3.4.2.1.9. referrer
|
||||||
|
|
||||||
|
The Referrer of a visit is collected and used. This MUST also be
|
||||||
|
specified if the referrer value is stripped of potential path
|
||||||
|
fragments.
|
||||||
|
|
||||||
|
3.4.2.1.10. visit-duration
|
||||||
|
|
||||||
|
The duration of a visit, either on page- or on session-level is
|
||||||
|
measured and used.
|
||||||
|
|
||||||
|
3.4.2.1.11. custom-events
|
||||||
|
|
||||||
|
Custom events like conversion goals are defined and used. This MAY
|
||||||
|
be left out in case the analytics software in use offers such
|
||||||
|
functionality, but implementors chose not to use the feature.
|
||||||
|
|
||||||
|
3.4.2.1.12. session-recording
|
||||||
|
|
||||||
|
Detailed behavior like mouse movement and scrolling is recorded and
|
||||||
|
can possibly be played back when analyzing the analytics data.
|
||||||
|
|
||||||
|
3.4.2.2. Example
|
||||||
|
|
||||||
|
Collects: url, device-type, referrer
|
||||||
|
|
||||||
|
3.4.3. Stores
|
||||||
|
|
||||||
|
This field is REQUIRED unless the only value of the Collects field as
|
||||||
|
per Section 3.4.2 is none. The multi-value field indicates whether
|
||||||
|
data is persisted on the client during the collection of analytics
|
||||||
|
data and declares the browser features used for doing so. In case no
|
||||||
|
data is being persisted at all, the value none MUST be used as the
|
||||||
|
single entry for this field.
|
||||||
|
|
||||||
|
3.4.3.1. Allowed values
|
||||||
|
|
||||||
|
3.4.3.1.1. none
|
||||||
|
|
||||||
|
No data is persisted on the client during the collection of usage
|
||||||
|
data. This value MUST NOT be used in conjunction with other values.
|
||||||
|
|
||||||
|
3.4.3.1.2. first-party-cookies
|
||||||
|
|
||||||
|
First party cookies are in use. There is no differentiation between
|
||||||
|
session or persistent cookies, just like HTTP and JavaScript cookies
|
||||||
|
are considered equal.
|
||||||
|
|
||||||
|
3.4.3.1.3. third-party-cookies
|
||||||
|
|
||||||
|
Third party cookies are in use. There is no differentiation between
|
||||||
|
session or persistent cookies, just like HTTP and JavaScript cookies
|
||||||
|
are considered equal.
|
||||||
|
|
||||||
|
3.4.3.1.4. local-storage
|
||||||
|
|
||||||
|
Data is persisted on the client using non-cookie JavaScript APIs like
|
||||||
|
"localStorage", "sessionStorage", "WebSQL" or "IndexedDB"
|
||||||
|
|
||||||
|
3.4.3.1.5. cache
|
||||||
|
|
||||||
|
The analytics software leverages browser cache mechanisms to store
|
||||||
|
identifiers. For example, ETag headers can be used to identify users
|
||||||
|
based on their browser caches' contents. This value is not required
|
||||||
|
in case the analytics software sends static resources with cache
|
||||||
|
headers, but does not make use of the request headers on subsequent
|
||||||
|
requests for purposes other than managing caching of assets.
|
||||||
|
|
||||||
|
3.4.3.2. Example
|
||||||
|
|
||||||
|
Stores: first-party-cookies, local-storage
|
||||||
|
|
||||||
|
3.4.4. Uses
|
||||||
|
|
||||||
|
This field is REQUIRED unless the only value of the Collects field
|
||||||
|
Section 3.4.2 is none. The multi-value field indicates the technical
|
||||||
|
implementation details for how analytics data is being collected.
|
||||||
|
|
||||||
|
3.4.4.1. Allowed values
|
||||||
|
|
||||||
|
3.4.4.1.1. javascript
|
||||||
|
|
||||||
|
A client-side script is used to collect data.
|
||||||
|
|
||||||
|
3.4.4.1.2. pixel
|
||||||
|
|
||||||
|
A static resource - typically a pixel - transferred via HTTP is being
|
||||||
|
used to collect data through the request parameters.
|
||||||
|
|
||||||
|
3.4.4.1.3. server-side
|
||||||
|
|
||||||
|
Collection of usage data is happening on the server side at the
|
||||||
|
application layer.
|
||||||
|
|
||||||
|
3.4.4.1.4. logs
|
||||||
|
|
||||||
|
Usage data is being calculated from server log files.
|
||||||
|
|
||||||
|
3.4.4.1.5. other
|
||||||
|
|
||||||
|
Other techniques that are not described in this section are in use.
|
||||||
|
|
||||||
|
3.4.4.2. Example
|
||||||
|
|
||||||
|
Uses: script
|
||||||
|
|
||||||
|
3.4.5. Allows
|
||||||
|
|
||||||
|
This field is REQUIRED unless the only value of the Collects field
|
||||||
|
Section 3.4.2 is none. The multi-value field discloses information
|
||||||
|
about whether user consent is being acquired before collecting
|
||||||
|
analytics data, and if it is possible for users to opt out of the
|
||||||
|
collection of usage data.
|
||||||
|
|
||||||
|
3.4.5.1. Allowed values
|
||||||
|
|
||||||
|
3.4.5.1.1. none
|
||||||
|
|
||||||
|
The software does not define a way for users to opt in or opt out of
|
||||||
|
the collection of usage data. This value also applies to scenarios
|
||||||
|
where only a subset of data is collected by default and could be
|
||||||
|
extended by opting in. This value MUST NOT be used in conjunction
|
||||||
|
with other values.
|
||||||
|
|
||||||
|
3.4.5.1.2. opt-in
|
||||||
|
|
||||||
|
No usage data is collected before users have given their consent.
|
||||||
|
|
||||||
|
3.4.5.1.3. opt-out
|
||||||
|
|
||||||
|
Users can opt out of collection of usage data using a dedicated
|
||||||
|
feature tailored towards the user audience. This value is only
|
||||||
|
applicable in case no data at all is collected after having opted
|
||||||
|
out.
|
||||||
|
|
||||||
|
3.4.5.2. Example
|
||||||
|
|
||||||
|
Allows: opt-out
|
||||||
|
|
||||||
|
3.4.6. Retains
|
||||||
|
|
||||||
|
This field is REQUIRED unless the only value of the Collects field
|
||||||
|
Section 3.4.2 is none. The single-value field indicates the duration
|
||||||
|
for which the analytics data is being stored before being deleted.
|
||||||
|
This duration MUST also cover periods where data might transition to
|
||||||
|
be stored in aggregated form only. The value is either a duration in
|
||||||
|
days (including the days suffix), or the token "perpetual" in case
|
||||||
|
data is retained without expiring it at some point. A day is defined
|
||||||
|
as 24 hours. In case the retention period does not divide evenly
|
||||||
|
into days, it MUST be brought up to the next round figure.
|
||||||
|
|
||||||
|
3.4.6.1. Example
|
||||||
|
|
||||||
|
Retains: 365 days
|
||||||
|
|
||||||
|
3.4.7. Honors
|
||||||
|
|
||||||
|
This OPTIONAL, RECOMMENDED multi-value field indicates which browser
|
||||||
|
level privacy controls are being honored when collecting data.
|
||||||
|
|
||||||
|
3.4.7.1. Allowed values
|
||||||
|
|
||||||
|
3.4.7.1.1. none
|
||||||
|
|
||||||
|
Data is collected even if any of the browser settings listed below
|
||||||
|
are in use. This value MUST NOT be used in conjunction with other
|
||||||
|
values.
|
||||||
|
|
||||||
|
3.4.7.1.2. do-not-track
|
||||||
|
|
||||||
|
User-Agents that have DoNotTrack [DNT] enabled will be excluded from
|
||||||
|
the collection of analytics data.
|
||||||
|
|
||||||
|
3.4.7.1.3. global-privacy-control
|
||||||
|
|
||||||
|
User agents that have Global Privacy Control [GPC] enabled will be
|
||||||
|
excluded from the collection of analytics data.
|
||||||
|
|
||||||
|
3.4.7.2. Example
|
||||||
|
|
||||||
|
Honors: do-not-track, global-privacy-control
|
||||||
|
|
||||||
|
3.4.8. Tracks
|
||||||
|
|
||||||
|
This OPTIONAL, RECOMMENDED multi-value field indicates the coverage
|
||||||
|
in session and user lifecycle tracking.
|
||||||
|
|
||||||
|
3.4.8.1. Allowed values
|
||||||
|
|
||||||
|
3.4.8.1.1. none
|
||||||
|
|
||||||
|
Each event that is collected is anonymous. There is no way to
|
||||||
|
connect and group multiple pageviews by user or similar. This value
|
||||||
|
MUST NOT be used in conjunction with other values.
|
||||||
|
|
||||||
|
3.4.8.1.2. sessions
|
||||||
|
|
||||||
|
Metrics that source from a single browser session can be grouped and
|
||||||
|
distinguished as such.
|
||||||
|
|
||||||
|
3.4.8.1.3. users
|
||||||
|
|
||||||
|
Users can be identified across multiple browser sessions.
|
||||||
|
|
||||||
|
3.4.8.2. Example
|
||||||
|
|
||||||
|
Tracks: sessions, users
|
||||||
|
|
||||||
|
3.4.9. Varies
|
||||||
|
|
||||||
|
This OPTIONAL, RECOMMENDED single-value field indicates the usage of
|
||||||
|
content experiments like A/B testing. It MUST contain a single value
|
||||||
|
only.
|
||||||
|
|
||||||
|
3.4.9.1. Allowed values
|
||||||
|
|
||||||
|
3.4.9.1.1. none
|
||||||
|
|
||||||
|
All users are served the same content without any changes. This
|
||||||
|
value MUST NOT be used in conjunction with other values.
|
||||||
|
|
||||||
|
3.4.9.1.2. random
|
||||||
|
|
||||||
|
Content experiments are performed by grouping users randomly into
|
||||||
|
buckets and serving them different content.
|
||||||
|
|
||||||
|
3.4.9.1.3. geographic
|
||||||
|
|
||||||
|
Content experiments are performed by targeting user based on their
|
||||||
|
geographic location.
|
||||||
|
|
||||||
|
3.4.9.1.4. behavioral
|
||||||
|
|
||||||
|
Content experiments are performed by grouping users into buckets
|
||||||
|
based on their behavior and serving them different content.
|
||||||
|
|
||||||
|
3.4.9.2. Example
|
||||||
|
|
||||||
|
Varies: random
|
||||||
|
|
||||||
|
3.4.10. Shares
|
||||||
|
|
||||||
|
This OPTIONAL, RECOMMENDED multi-value field indicates whether data
|
||||||
|
is shared with select users, the general public or third parties.
|
||||||
|
|
||||||
|
3.4.10.1. Allowed values
|
||||||
|
|
||||||
|
3.4.10.1.1. none
|
||||||
|
|
||||||
|
The data collected is not shared with any party unless directly
|
||||||
|
affiliated with the implementor, e.g. employees.
|
||||||
|
|
||||||
|
3.4.10.1.2. per-user
|
||||||
|
|
||||||
|
Users can access the usage data that is associated with them in a
|
||||||
|
non-aggregated way, isolating all data that is specific to their
|
||||||
|
current means of re-identification.
|
||||||
|
|
||||||
|
3.4.10.1.3. general-public
|
||||||
|
|
||||||
|
Usage statistics for the site or service are available to the general
|
||||||
|
public.
|
||||||
|
|
||||||
|
3.4.10.1.4. third-party
|
||||||
|
|
||||||
|
Data is being shared non-publicly with third parties. This MUST also
|
||||||
|
be specified when datasets are aggregated or pseudonymized
|
||||||
|
beforehand.
|
||||||
|
|
||||||
|
3.4.10.2. Example
|
||||||
|
|
||||||
|
Shares: general-public
|
||||||
|
|
||||||
|
3.4.11. Implements
|
||||||
|
|
||||||
|
This OPTIONAL field indicates conformance with existing regulations
|
||||||
|
and legislation. Values for this field SHOULD use all lowercase
|
||||||
|
tokens with whitespace being replaced by the dash character (%x2d).
|
||||||
|
|
||||||
|
Example values are:
|
||||||
|
|
||||||
|
* gdpr
|
||||||
|
|
||||||
|
* ccpa
|
||||||
|
|
||||||
|
3.4.11.1. Example
|
||||||
|
|
||||||
|
Implements: gdpr, ccpa
|
||||||
|
|
||||||
|
3.4.12. Deploys
|
||||||
|
|
||||||
|
This OPTIONAL field indicates which software is being used for
|
||||||
|
collecting analytics. Values for this field SHOULD use all lowercase
|
||||||
|
tokens with whitespace being replaced by the dash character (%x2d).
|
||||||
|
|
||||||
|
Example values are:
|
||||||
|
|
||||||
|
* google-analytics
|
||||||
|
|
||||||
|
* plausible
|
||||||
|
|
||||||
|
* hotjar
|
||||||
|
|
||||||
|
* matomo
|
||||||
|
|
||||||
|
3.4.12.1. Example
|
||||||
|
|
||||||
|
Deploys: google-analytics, hotjar
|
||||||
|
|
||||||
|
3.5. Examples of analytics.txt files
|
||||||
|
|
||||||
|
3.5.1. A site using analytics
|
||||||
|
|
||||||
|
# analytics.txt file for www.example.com
|
||||||
|
Author: Jane Doe <doe@example.com>
|
||||||
|
|
||||||
|
Collects: url, referrer, device-type
|
||||||
|
Stores: first-party-cookies, local-storage
|
||||||
|
# Usage data is encrypted end-to-end
|
||||||
|
Uses: javascript
|
||||||
|
# Users can also delete their usage data only without opting out
|
||||||
|
Allows: opt-in, opt-out
|
||||||
|
Retains: 186 days
|
||||||
|
|
||||||
|
# Optional fields
|
||||||
|
Honors: none
|
||||||
|
Tracks: sessions, users
|
||||||
|
Varies: none
|
||||||
|
Shares: per-user
|
||||||
|
Implements: gdpr
|
||||||
|
|
||||||
|
3.5.2. Specifying required fields only
|
||||||
|
|
||||||
|
Author: John Doe <doe@example.com>
|
||||||
|
Collects: url, ip-address, geo-location, user-agent, referrer, device-type, custom-events
|
||||||
|
Stores: none
|
||||||
|
Uses: javascript
|
||||||
|
Allows: none
|
||||||
|
Retains: perpetual
|
||||||
|
|
||||||
|
3.5.3. A site not using any analytics
|
||||||
|
|
||||||
|
# analytics.txt file for www.example.com
|
||||||
|
Author: Jane Doe <doe@example.com>
|
||||||
|
Collects: none
|
||||||
|
|
||||||
|
4. Location of the analytics.txt file
|
||||||
|
|
||||||
|
By default, an analytics.txt file SHOULD be placed in the ".well-
|
||||||
|
known" location as per [RFC8615] of a domain name or IP address.
|
||||||
|
|
||||||
|
4.1. Alternatives
|
||||||
|
|
||||||
|
In case implementors are unable to meet this requirement, other
|
||||||
|
options are available.
|
||||||
|
|
||||||
|
4.1.1. link Tag
|
||||||
|
|
||||||
|
Implementors MAY signal the location of an analytics.txt file in the
|
||||||
|
context of a HTML document using a link element of rel "analytics"
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
<link rel="analytics" href="https://example.com/resources/analytics.txt">
|
||||||
|
|
||||||
|
4.1.2. HTTP Header
|
||||||
|
|
||||||
|
Implementors MAY send an HTTP header of "X-Analytics-Txt" with a
|
||||||
|
response, sending the URI of the applicable file.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
X-Analytics-Txt: https://example.com/resources/analytics.txt
|
||||||
|
|
||||||
|
4.2. Precedence
|
||||||
|
|
||||||
|
In case multiple of these signals are being used, the precedence
|
||||||
|
taken is:
|
||||||
|
|
||||||
|
1. X-Analytics-Txt Header
|
||||||
|
|
||||||
|
2. link element
|
||||||
|
|
||||||
|
3. ".well-known" location
|
||||||
|
|
||||||
|
4.3. Scope of a file
|
||||||
|
|
||||||
|
An analytics.txt file located in the ".well-known" location MUST only
|
||||||
|
apply to the domain or IP address of the URI used to retrieve it, and
|
||||||
|
SHALL NOT apply to any of its subdomains or parent domains. If the
|
||||||
|
location is signaled using the HTTP Header or in the document markup
|
||||||
|
itself, its scope SHALL be limited to the requested resource only.
|
||||||
|
|
||||||
|
If distributed in non-standard locations, an analytics.txt file MAY
|
||||||
|
also apply to products and services provided by the organization
|
||||||
|
publishing the file (e.g. desktop or mobile applications) and which
|
||||||
|
cannot be mapped to a domain name or IP address. In such cases,
|
||||||
|
implementors MUST add sufficient commentary describing the applicable
|
||||||
|
scope.
|
||||||
|
|
||||||
|
5. Security Considerations
|
||||||
|
|
||||||
|
5.1. Incorrect or stale information
|
||||||
|
|
||||||
|
If information given in an "analytics.txt" file is incorrect or not
|
||||||
|
kept up to date, this can result in usage of services under wrong
|
||||||
|
assumptions, thus exposing users to possibly unwanted data collection
|
||||||
|
and handling. Not having an "analytics.txt" file may be preferable
|
||||||
|
to having incorrect or stale information in this file. This
|
||||||
|
guideline also applies to field level: in case of ambiguities or
|
||||||
|
uncertainties, it's recommended to omit a field or a value rather
|
||||||
|
than providing incorrect information. Implementors MUST use the
|
||||||
|
"Author" field (see Section 3.4.1) to allow inquiries about the
|
||||||
|
correctness of the given information.
|
||||||
|
|
||||||
|
5.2. Spam
|
||||||
|
|
||||||
|
Implementors should be aware that disclosing mandatory author
|
||||||
|
information as per Section 3.4.1 in such a file exposes them to
|
||||||
|
possible Spam schemes or spurious requests.
|
||||||
|
|
||||||
|
5.3. Multi-user environments
|
||||||
|
|
||||||
|
In multi-user / multi-tenant environments, it may possible for a
|
||||||
|
single user to take over the location of the "/.well-known/
|
||||||
|
analytics.txt" file which would also apply to others. Organizations
|
||||||
|
should ensure the ".well-known" location is properly protected.
|
||||||
|
Implementors can instead use other locations as per Section 4 in such
|
||||||
|
scenarios.
|
||||||
|
|
||||||
|
6. IANA Considerations
|
||||||
|
|
||||||
|
6.1. Well-Known URIs registry
|
||||||
|
|
||||||
|
The "Well-Known URIs" registry should be updated with the following
|
||||||
|
additional values (using the template from [RFC8615]):
|
||||||
|
|
||||||
|
URI suffix: analytics.txt
|
||||||
|
|
||||||
|
Specification document(s): this document
|
||||||
|
|
||||||
|
Status: permanent
|
||||||
|
|
||||||
|
7. References
|
||||||
|
|
||||||
|
7.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://datatracker.ietf.org/doc/html/rfc2119>.
|
||||||
|
|
||||||
|
[RFC5322] Resnick, P., Ed., "Internet Message Format", RFC 5322,
|
||||||
|
DOI 10.17487/RFC5322, October 2008,
|
||||||
|
<https://datatracker.ietf.org/doc/html/rfc5322>.
|
||||||
|
|
||||||
|
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
|
||||||
|
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
|
||||||
|
May 2017, <https://datatracker.ietf.org/doc/html/rfc8174>.
|
||||||
|
|
||||||
|
[RFC8615] Nottingham, M., "Well-Known Uniform Resource Identifiers
|
||||||
|
(URIs)", RFC 8615, DOI 10.17487/RFC8615, May 2019,
|
||||||
|
<https://datatracker.ietf.org/doc/html/rfc8615>.
|
||||||
|
|
||||||
|
7.2. Informative References
|
||||||
|
|
||||||
|
[DNT] Fielding, R.T. and D. Singer, "Tracking Preference
|
||||||
|
Expression (DNT)", n.d.,
|
||||||
|
<https://www.w3.org/TR/tracking-dnt/>.
|
||||||
|
|
||||||
|
[GPC] Berjon, R., Zimmeck, S., Soltani, A., Harbage, D., and P.
|
||||||
|
Snyder, "Global Privacy Control (GPC)", n.d.,
|
||||||
|
<https://globalprivacycontrol.github.io/gpc-spec/>.
|
||||||
|
|
||||||
|
[RFC5234] Crocker, D., Ed. and P. Overell, "Augmented BNF for Syntax
|
||||||
|
Specifications: ABNF", STD 68, RFC 5234,
|
||||||
|
DOI 10.17487/RFC5234, January 2008,
|
||||||
|
<https://datatracker.ietf.org/doc/html/rfc5234>.
|
||||||
|
|
||||||
|
Appendix A. Acknowledgments
|
||||||
|
|
||||||
|
The authors would like to acknowledge the feedback and input provided
|
||||||
|
during the creation of this document as given by Michiel Leenaars,
|
||||||
|
Cyrill Kraehenbuehl, Lasse Voss.
|
||||||
|
|
||||||
|
Authors' Addresses
|
||||||
|
|
||||||
|
Frederik Ring
|
||||||
|
Offen
|
||||||
|
|
||||||
|
Email: frederik.ring@gmail.com
|
||||||
|
|
||||||
|
|
||||||
|
Hendrik Niefeld
|
||||||
|
Offen
|
||||||
|
|
||||||
|
Email: hello@niefeld.com
|
52
draft-ring-analyticstxt-02/index.html
Normal file
52
draft-ring-analyticstxt-02/index.html
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>offen/analyticstxt draft-ring-analyticstxt-02 preview</title>
|
||||||
|
<meta name="viewport" content="initial-scale=1.0">
|
||||||
|
<style type="text/css">/*<![CDATA[*/
|
||||||
|
body { font-family: "Helvetica Neue","Open Sans", Helvetica, Calibri,sans-serif; }
|
||||||
|
h1, h2, td { font-family: "Helvetica Neue", "Roboto Condensed", "Open Sans", Helvetica, Calibri, sans-serif; }
|
||||||
|
h1 { font-size: 20px; } h2 { font-size: 16px; }
|
||||||
|
table { margin: 5px 10px; border-collapse: collapse; }
|
||||||
|
th, td { font-weight: normal; text-align: left; padding: 2px 5px; }
|
||||||
|
a:link { color: #000; } a:visited { color: #00a; }
|
||||||
|
/*]]>*/</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>Editor's drafts for draft-ring-analyticstxt-02 branch of <a href="https://github.com/offen/analyticstxt/tree/draft-ring-analyticstxt-02">offen/analyticstxt</a></h1>
|
||||||
|
<p>View <a href="issues.html">saved issues</a>, or the latest GitHub <a href="https://github.com/offen/analyticstxt/issues">issues</a> and <a href="https://github.com/offen/analyticstxt/pulls">pull requests</a>.</p>
|
||||||
|
<table id="branch-draft-ring-analyticstxt-02">
|
||||||
|
<tr>
|
||||||
|
<th>draft-ring-analyticstxt</th>
|
||||||
|
<td><a href="./draft-ring-analyticstxt.html" class="html draft-ring-analyticstxt">html</a></td>
|
||||||
|
<td><a href="./draft-ring-analyticstxt.txt" class="txt draft-ring-analyticstxt">plain text</a></td>
|
||||||
|
<td><a href="https://tools.ietf.org/rfcdiff?url1=https://offen.github.io/analyticstxt/draft-ring-analyticstxt.txt&url2=https://offen.github.io/analyticstxt/draft-ring-analyticstxt-02/draft-ring-analyticstxt.txt">diff with main</a></td>
|
||||||
|
<td><a href="https://tools.ietf.org/rfcdiff?url1=https://tools.ietf.org/id/draft-ring-analyticstxt.txt&url2=https://offen.github.io/analyticstxt/draft-ring-analyticstxt-02/draft-ring-analyticstxt.txt" class="diff draft-ring-analyticstxt">diff with last submission</a></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<script>
|
||||||
|
// @licstart
|
||||||
|
// Any copyright is dedicated to the Public Domain.
|
||||||
|
// http://creativecommons.org/publicdomain/zero/1.0/
|
||||||
|
// @licend
|
||||||
|
window.onload = function() {
|
||||||
|
var referrer_branch = 'main';
|
||||||
|
// e.g., "https://github.com/user/repo/tree/main"
|
||||||
|
var chunks = document.referrer.split("/");
|
||||||
|
if (chunks[2] === 'github.com' && chunks[5] === 'tree') {
|
||||||
|
referrer_branch = chunks[6];
|
||||||
|
}
|
||||||
|
let branch = document.querySelector('#branch-' + referrer_branch);
|
||||||
|
let h = document.location.hash.substring(1);
|
||||||
|
if (h === 'show') {
|
||||||
|
document.location.hash = '#' + branch.id;
|
||||||
|
} else if (branch && h.startsWith('go')) {
|
||||||
|
let e = branch.querySelector(h.substring(2));
|
||||||
|
if (e && e.href) {
|
||||||
|
document.location = e.href;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
2190
draft-ring-analyticstxt.html
Normal file
2190
draft-ring-analyticstxt.html
Normal file
File diff suppressed because it is too large
Load Diff
829
draft-ring-analyticstxt.txt
Normal file
829
draft-ring-analyticstxt.txt
Normal file
@ -0,0 +1,829 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Network Working Group F. Ring
|
||||||
|
Internet-Draft H. Niefeld
|
||||||
|
Intended status: Informational Offen
|
||||||
|
Expires: 19 February 2022 18 August 2021
|
||||||
|
|
||||||
|
|
||||||
|
A File Format for the Discoverable Use of Analytics
|
||||||
|
draft-ring-analyticstxt-latest
|
||||||
|
|
||||||
|
Abstract
|
||||||
|
|
||||||
|
Internet privacy has become an important feature for users of
|
||||||
|
websites and services. This document proposes a way for websites and
|
||||||
|
services to declare and disclose their usage of analytics and
|
||||||
|
tracking software. analytics.txt aims to be an elaborate file format
|
||||||
|
that describes the privacy related characteristics of analytics and
|
||||||
|
tracking software in a non-biased way. An analytics.txt file is
|
||||||
|
understandable for a non-technical audience, while also useful for
|
||||||
|
the automated consumption by tools and software.
|
||||||
|
|
||||||
|
Discussion Venues
|
||||||
|
|
||||||
|
This note is to be removed before publishing as an RFC.
|
||||||
|
|
||||||
|
Source for this draft and an issue tracker can be found at
|
||||||
|
https://github.com/offen/analyticstxt.
|
||||||
|
|
||||||
|
Status of This Memo
|
||||||
|
|
||||||
|
This Internet-Draft is submitted in full conformance with the
|
||||||
|
provisions of BCP 78 and BCP 79.
|
||||||
|
|
||||||
|
Internet-Drafts are working documents of the Internet Engineering
|
||||||
|
Task Force (IETF). Note that other groups may also distribute
|
||||||
|
working documents as Internet-Drafts. The list of current Internet-
|
||||||
|
Drafts is at https://datatracker.ietf.org/drafts/current/.
|
||||||
|
|
||||||
|
Internet-Drafts are draft documents valid for a maximum of six months
|
||||||
|
and may be updated, replaced, or obsoleted by other documents at any
|
||||||
|
time. It is inappropriate to use Internet-Drafts as reference
|
||||||
|
material or to cite them other than as "work in progress."
|
||||||
|
|
||||||
|
This Internet-Draft will expire on 19 February 2022.
|
||||||
|
|
||||||
|
Copyright Notice
|
||||||
|
|
||||||
|
Copyright (c) 2021 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. Code Components
|
||||||
|
extracted from this document must include Simplified BSD License text
|
||||||
|
as described in Section 4.e of the Trust Legal Provisions and are
|
||||||
|
provided without warranty as described in the Simplified BSD License.
|
||||||
|
|
||||||
|
Table of Contents
|
||||||
|
|
||||||
|
1. Introduction
|
||||||
|
1.1. Motivation
|
||||||
|
1.2. Scope of this proposal
|
||||||
|
1.2.1. About providing a human readable format
|
||||||
|
1.3. Definition of the term "analytics" in the scope of this
|
||||||
|
document
|
||||||
|
1.4. Verifying the provided information
|
||||||
|
1.4.1. Non-biased
|
||||||
|
1.4.2. Non-canonical
|
||||||
|
2. Conventions and Definitions
|
||||||
|
3. Specification
|
||||||
|
3.1. Comments
|
||||||
|
3.2. Line Separators
|
||||||
|
3.3. Extensibility
|
||||||
|
3.4. Field Definitions
|
||||||
|
3.4.1. Author
|
||||||
|
3.4.2. Collects
|
||||||
|
3.4.3. Stores
|
||||||
|
3.4.4. Uses
|
||||||
|
3.4.5. Allows
|
||||||
|
3.4.6. Retains
|
||||||
|
3.4.7. Honors
|
||||||
|
3.4.8. Tracks
|
||||||
|
3.4.9. Varies
|
||||||
|
3.4.10. Shares
|
||||||
|
3.4.11. Implements
|
||||||
|
3.4.12. Deploys
|
||||||
|
3.5. Examples of analytics.txt files
|
||||||
|
3.5.1. A site using analytics
|
||||||
|
3.5.2. Specifying required fields only
|
||||||
|
3.5.3. A site not using any analytics
|
||||||
|
4. Location of the analytics.txt file
|
||||||
|
4.1. Alternatives
|
||||||
|
4.1.1. link Tag
|
||||||
|
4.1.2. HTTP Header
|
||||||
|
4.2. Precedence
|
||||||
|
4.3. Scope of a file
|
||||||
|
5. Security Considerations
|
||||||
|
5.1. Incorrect or stale information
|
||||||
|
5.2. Spam
|
||||||
|
5.3. Multi-user environments
|
||||||
|
6. IANA Considerations
|
||||||
|
6.1. Well-Known URIs registry
|
||||||
|
7. References
|
||||||
|
7.1. Normative References
|
||||||
|
7.2. Informative References
|
||||||
|
Appendix A. Acknowledgments
|
||||||
|
Authors' Addresses
|
||||||
|
|
||||||
|
1. Introduction
|
||||||
|
|
||||||
|
1.1. Motivation
|
||||||
|
|
||||||
|
User tracking and the utilization of analytics software on websites
|
||||||
|
has become a widely employed routine, visibly and invisibly affecting
|
||||||
|
the way the user facing internet works and behaves. Yet, there is no
|
||||||
|
well-defined way of accessing information about what software is
|
||||||
|
being used and what kind of data it is collecting in a standardized
|
||||||
|
way. Legislation can only ever cover a subset of the range of
|
||||||
|
existing technological implementations, creating incentives for
|
||||||
|
software to find workarounds, thus allowing them to hide their
|
||||||
|
presence from users. Automated audits are limited to aspects that
|
||||||
|
are possible to detect in clients, but cannot disclose other
|
||||||
|
important implementation details.
|
||||||
|
|
||||||
|
1.2. Scope of this proposal
|
||||||
|
|
||||||
|
This document defines a way to specify the privacy related
|
||||||
|
characteristics of analytics and tracking software. We aim for this
|
||||||
|
information to be consumable both by humans as well as software.
|
||||||
|
|
||||||
|
The file "analytics.txt" is not intended to replace the requirement
|
||||||
|
for complying with existing regulations, but supposed to give
|
||||||
|
insights beyond the scope of these regulations.
|
||||||
|
|
||||||
|
1.2.1. About providing a human readable format
|
||||||
|
|
||||||
|
A fundamental design goal of the "analytics.txt" format is to make
|
||||||
|
such a file human readable. While the percentage of consumers that
|
||||||
|
are actually human beings will likely be low - browser extensions or
|
||||||
|
search engines would be good examples of possible consumers - this
|
||||||
|
tenet can drive the specification into a direction where the format
|
||||||
|
will focus on providing information that is useful for human beings,
|
||||||
|
even when captured and processed further by other software.
|
||||||
|
|
||||||
|
1.3. Definition of the term "analytics" in the scope of this document
|
||||||
|
|
||||||
|
Analytics as referred to in this document involves the collection of
|
||||||
|
usage statistics in order to generate reports that can help the
|
||||||
|
providers of websites and services to better understand and optimize
|
||||||
|
their services towards real world user behavior. This can also
|
||||||
|
include measuring different content against different groups of
|
||||||
|
users.
|
||||||
|
|
||||||
|
1.4. Verifying the provided information
|
||||||
|
|
||||||
|
"analytics.txt" is designed to provide insights beyond what is
|
||||||
|
technically auditable from a client perspective. While some
|
||||||
|
characteristics could be determined automatically or manually at
|
||||||
|
client level, others won't, and will rely on implementors providing
|
||||||
|
correct information about what is happening at layers that are opaque
|
||||||
|
to users. This means consumers of an "analytics.txt" file will
|
||||||
|
implictly need to trust the implementor to provide correct
|
||||||
|
information, implicating two design goals for the format (technical
|
||||||
|
implications are discussed in Section 5.1).
|
||||||
|
|
||||||
|
1.4.1. Non-biased
|
||||||
|
|
||||||
|
All of the given datapoints are purely informational, there is no
|
||||||
|
right or wrong option to choose from, and the format will never
|
||||||
|
provide guidelines on how to assess or rate an "analytics.txt" file.
|
||||||
|
Based on this, implementors don't have strong incentives for
|
||||||
|
providing incorrect information, but choose implementation because
|
||||||
|
they are wishing to disclose information about their site that they
|
||||||
|
otherwise couldn't.
|
||||||
|
|
||||||
|
1.4.2. Non-canonical
|
||||||
|
|
||||||
|
An "analytics.txt" file should never be the canonical source of truth
|
||||||
|
for making automated decisions or ratings about a site. It is
|
||||||
|
supposed to be one of multiple signals that can be used for assessing
|
||||||
|
the behavior of a website, creating the possibility to connect and
|
||||||
|
compare the provided data with what has been surveyed using other
|
||||||
|
channels of information.
|
||||||
|
|
||||||
|
2. Conventions and Definitions
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
The term "implementors" refers to the providers of services and
|
||||||
|
websites that wish to use an analytics.txt file.
|
||||||
|
|
||||||
|
3. Specification
|
||||||
|
|
||||||
|
This document defines a text file format that can be used by
|
||||||
|
implementors to signal information about their usage of analytics
|
||||||
|
software to both users and software.
|
||||||
|
|
||||||
|
By convention, this file is called "analytics.txt". Its location and
|
||||||
|
scope are described in Section 4.
|
||||||
|
|
||||||
|
This text file contains multiple fields with different values. A
|
||||||
|
field contains a "name" which is the first part of a field all the
|
||||||
|
way up to the colon (for example: "Author:") and follows the syntax
|
||||||
|
defined for "field-name" in section 3.6.8 of [RFC5322]. Field names
|
||||||
|
are case-insensitive (as per section 2.3 of [RFC5234]). The "value"
|
||||||
|
comes after the field name and follows the syntax defined for
|
||||||
|
"unstructured" in section 3.2.5 of [RFC5322]. The file MAY also
|
||||||
|
contain blank lines and comments.
|
||||||
|
|
||||||
|
A field MUST always consist of a name and a value (for example:
|
||||||
|
"Author: Jane Doe jane.doe@example.com
|
||||||
|
(mailto:jane.doe@example.com)"). Each field MUST appear on its own
|
||||||
|
line. Unless specified otherwise by the field definition, multiple
|
||||||
|
values MUST be chained together for a single field (for example:
|
||||||
|
"Implements: gdpr, ccpa") using the "," character (%x2c). A field
|
||||||
|
MAY NOT appear multiple times.
|
||||||
|
|
||||||
|
Implementors SHOULD aim for authoring an analytics.txt file that is
|
||||||
|
easy to understand by non-technical audiences.
|
||||||
|
|
||||||
|
3.1. Comments
|
||||||
|
|
||||||
|
Any line beginning with the "#" (%x23) symbol MUST be interpreted as
|
||||||
|
a comment. The content of the comment may contain any ASCII or
|
||||||
|
Unicode characters in the %x21-7E and %x80-FFFFF ranges plus the tab
|
||||||
|
(%x09) and space (%x20) characters.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
# This is a comment
|
||||||
|
|
||||||
|
Implementors SHOULD make deliberate use of comments to make an
|
||||||
|
analytics.txt file more accessible for non-technical audiences.
|
||||||
|
|
||||||
|
3.2. Line Separators
|
||||||
|
|
||||||
|
Every line MUST end either with a carriage return and line feed
|
||||||
|
characters (CRLF / %x0D %x0A) or just a line feed character (LF /
|
||||||
|
%x0A).
|
||||||
|
|
||||||
|
3.3. Extensibility
|
||||||
|
|
||||||
|
Like many other formats and protocols, this format may need to be
|
||||||
|
extended over time to fit the ever-changing landscape of the
|
||||||
|
Internet. Special attention is required for defining the allowed
|
||||||
|
values in enumerations to ensure they are a. extendable and b. do not
|
||||||
|
become obsolete too quickly.
|
||||||
|
|
||||||
|
3.4. Field Definitions
|
||||||
|
|
||||||
|
Field names are case-insensitive, yet implementors SHOULD use the
|
||||||
|
capitalized style used in this document for consistency.
|
||||||
|
|
||||||
|
Field values are case-insensitive. Unless otherwise specified,
|
||||||
|
implementors MUST refer to the allowed values for a field given by
|
||||||
|
the specification.
|
||||||
|
|
||||||
|
3.4.1. Author
|
||||||
|
|
||||||
|
This REQUIRED field holds an OPTIONAL display name and a REQUIRED
|
||||||
|
email address ("name-addr") as per section 3.4 of [RFC5322] providing
|
||||||
|
information about a person or entity responsible for maintaining the
|
||||||
|
contents of the file. The field MUST contain a valid email address
|
||||||
|
which shall be used for inquiries about the correctness and additions
|
||||||
|
to the data provided in the file.
|
||||||
|
|
||||||
|
3.4.1.1. Example
|
||||||
|
|
||||||
|
Author: Jane Doe <jane.doe@example.com>
|
||||||
|
|
||||||
|
3.4.2. Collects
|
||||||
|
|
||||||
|
This REQUIRED multi-value field indicates which potentially privacy
|
||||||
|
relevant user specific data is being collected or used in session
|
||||||
|
identification or other procedures. These values MUST also be
|
||||||
|
specified if a property is not persisted as-is, but stored or
|
||||||
|
processed in a hashed and/or combined form. Some of the allowed
|
||||||
|
values overlap to a certain extent, e.g. a User Agent string might be
|
||||||
|
used in a Browser Fingerprint.
|
||||||
|
|
||||||
|
3.4.2.1. Allowed values
|
||||||
|
|
||||||
|
3.4.2.1.1. none
|
||||||
|
|
||||||
|
No analytics data is collected at all. This value MUST NOT be used
|
||||||
|
in conjunction with other values.
|
||||||
|
|
||||||
|
3.4.2.1.2. url
|
||||||
|
|
||||||
|
The URL of a visit, including its path, is collected and used. This
|
||||||
|
MUST also be specified in case URLs are stripped of certain
|
||||||
|
parameters or pseudonymized before being stored.
|
||||||
|
|
||||||
|
3.4.2.1.3. time
|
||||||
|
|
||||||
|
The time of visit is collected.
|
||||||
|
|
||||||
|
3.4.2.1.4. ip-address
|
||||||
|
|
||||||
|
The request IP address is being used.
|
||||||
|
|
||||||
|
3.4.2.1.5. geo-location
|
||||||
|
|
||||||
|
Geographic location of users is determined and used. This could for
|
||||||
|
example be derived from the request IP, or from using browser APIs.
|
||||||
|
|
||||||
|
3.4.2.1.6. user-agent
|
||||||
|
|
||||||
|
Information about the utilized User Agent is being collected.
|
||||||
|
|
||||||
|
3.4.2.1.7. fingerprint
|
||||||
|
|
||||||
|
Browser Fingerprinting is used. Such mechanisms usually try to
|
||||||
|
compute a unique identifier from properties of the host Operating
|
||||||
|
System, allowing them to re-identify users without having to persist
|
||||||
|
an identifier.
|
||||||
|
|
||||||
|
3.4.2.1.8. device-type
|
||||||
|
|
||||||
|
The user's device type (e.g. mobile / tablet / desktop) is being
|
||||||
|
determined and collected. The categories and rules for this
|
||||||
|
distinction might be different for different software solutions.
|
||||||
|
|
||||||
|
3.4.2.1.9. referrer
|
||||||
|
|
||||||
|
The Referrer of a visit is collected and used. This MUST also be
|
||||||
|
specified if the referrer value is stripped of potential path
|
||||||
|
fragments.
|
||||||
|
|
||||||
|
3.4.2.1.10. visit-duration
|
||||||
|
|
||||||
|
The duration of a visit, either on page- or on session-level is
|
||||||
|
measured and used.
|
||||||
|
|
||||||
|
3.4.2.1.11. custom-events
|
||||||
|
|
||||||
|
Custom events like conversion goals are defined and used. This MAY
|
||||||
|
be left out in case the analytics software in use offers such
|
||||||
|
functionality, but implementors chose not to use the feature.
|
||||||
|
|
||||||
|
3.4.2.1.12. session-recording
|
||||||
|
|
||||||
|
Detailed behavior like mouse movement and scrolling is recorded and
|
||||||
|
can possibly be played back when analyzing the analytics data.
|
||||||
|
|
||||||
|
3.4.2.2. Example
|
||||||
|
|
||||||
|
Collects: url, device-type, referrer
|
||||||
|
|
||||||
|
3.4.3. Stores
|
||||||
|
|
||||||
|
This field is REQUIRED unless the only value of the Collects field as
|
||||||
|
per Section 3.4.2 is none. The multi-value field indicates whether
|
||||||
|
data is persisted on the client during the collection of analytics
|
||||||
|
data and declares the browser features used for doing so. In case no
|
||||||
|
data is being persisted at all, the value none MUST be used as the
|
||||||
|
single entry for this field.
|
||||||
|
|
||||||
|
3.4.3.1. Allowed values
|
||||||
|
|
||||||
|
3.4.3.1.1. none
|
||||||
|
|
||||||
|
No data is persisted on the client during the collection of usage
|
||||||
|
data. This value MUST NOT be used in conjunction with other values.
|
||||||
|
|
||||||
|
3.4.3.1.2. first-party-cookies
|
||||||
|
|
||||||
|
First party cookies are in use. There is no differentiation between
|
||||||
|
session or persistent cookies, just like HTTP and JavaScript cookies
|
||||||
|
are considered equal.
|
||||||
|
|
||||||
|
3.4.3.1.3. third-party-cookies
|
||||||
|
|
||||||
|
Third party cookies are in use. There is no differentiation between
|
||||||
|
session or persistent cookies, just like HTTP and JavaScript cookies
|
||||||
|
are considered equal.
|
||||||
|
|
||||||
|
3.4.3.1.4. local-storage
|
||||||
|
|
||||||
|
Data is persisted on the client using non-cookie JavaScript APIs like
|
||||||
|
"localStorage", "sessionStorage", "WebSQL" or "IndexedDB"
|
||||||
|
|
||||||
|
3.4.3.1.5. cache
|
||||||
|
|
||||||
|
The analytics software leverages browser cache mechanisms to store
|
||||||
|
identifiers. For example, ETag headers can be used to identify users
|
||||||
|
based on their browser caches' contents. This value is not required
|
||||||
|
in case the analytics software sends static resources with cache
|
||||||
|
headers, but does not make use of the request headers on subsequent
|
||||||
|
requests for purposes other than managing caching of assets.
|
||||||
|
|
||||||
|
3.4.3.2. Example
|
||||||
|
|
||||||
|
Stores: first-party-cookies, local-storage
|
||||||
|
|
||||||
|
3.4.4. Uses
|
||||||
|
|
||||||
|
This field is REQUIRED unless the only value of the Collects field
|
||||||
|
Section 3.4.2 is none. The multi-value field indicates the technical
|
||||||
|
implementation details for how analytics data is being collected.
|
||||||
|
|
||||||
|
3.4.4.1. Allowed values
|
||||||
|
|
||||||
|
3.4.4.1.1. javascript
|
||||||
|
|
||||||
|
A client-side script is used to collect data.
|
||||||
|
|
||||||
|
3.4.4.1.2. pixel
|
||||||
|
|
||||||
|
A static resource - typically a pixel - transferred via HTTP is being
|
||||||
|
used to collect data through the request parameters.
|
||||||
|
|
||||||
|
3.4.4.1.3. server-side
|
||||||
|
|
||||||
|
Collection of usage data is happening on the server side at the
|
||||||
|
application layer.
|
||||||
|
|
||||||
|
3.4.4.1.4. logs
|
||||||
|
|
||||||
|
Usage data is being calculated from server log files.
|
||||||
|
|
||||||
|
3.4.4.1.5. other
|
||||||
|
|
||||||
|
Other techniques that are not described in this section are in use.
|
||||||
|
|
||||||
|
3.4.4.2. Example
|
||||||
|
|
||||||
|
Uses: script
|
||||||
|
|
||||||
|
3.4.5. Allows
|
||||||
|
|
||||||
|
This field is REQUIRED unless the only value of the Collects field
|
||||||
|
Section 3.4.2 is none. The multi-value field discloses information
|
||||||
|
about whether user consent is being acquired before collecting
|
||||||
|
analytics data, and if it is possible for users to opt out of the
|
||||||
|
collection of usage data.
|
||||||
|
|
||||||
|
3.4.5.1. Allowed values
|
||||||
|
|
||||||
|
3.4.5.1.1. none
|
||||||
|
|
||||||
|
The software does not define a way for users to opt in or opt out of
|
||||||
|
the collection of usage data. This value also applies to scenarios
|
||||||
|
where only a subset of data is collected by default and could be
|
||||||
|
extended by opting in. This value MUST NOT be used in conjunction
|
||||||
|
with other values.
|
||||||
|
|
||||||
|
3.4.5.1.2. opt-in
|
||||||
|
|
||||||
|
No usage data is collected before users have given their consent.
|
||||||
|
|
||||||
|
3.4.5.1.3. opt-out
|
||||||
|
|
||||||
|
Users can opt out of collection of usage data using a dedicated
|
||||||
|
feature tailored towards the user audience. This value is only
|
||||||
|
applicable in case no data at all is collected after having opted
|
||||||
|
out.
|
||||||
|
|
||||||
|
3.4.5.2. Example
|
||||||
|
|
||||||
|
Allows: opt-out
|
||||||
|
|
||||||
|
3.4.6. Retains
|
||||||
|
|
||||||
|
This field is REQUIRED unless the only value of the Collects field
|
||||||
|
Section 3.4.2 is none. The single-value field indicates the duration
|
||||||
|
for which the analytics data is being stored before being deleted.
|
||||||
|
This duration MUST also cover periods where data might transition to
|
||||||
|
be stored in aggregated form only. The value is either a duration in
|
||||||
|
days (including the days suffix), or the token "perpetual" in case
|
||||||
|
data is retained without expiring it at some point. A day is defined
|
||||||
|
as 24 hours. In case the retention period does not divide evenly
|
||||||
|
into days, it MUST be brought up to the next round figure.
|
||||||
|
|
||||||
|
3.4.6.1. Example
|
||||||
|
|
||||||
|
Retains: 365 days
|
||||||
|
|
||||||
|
3.4.7. Honors
|
||||||
|
|
||||||
|
This OPTIONAL, RECOMMENDED multi-value field indicates which browser
|
||||||
|
level privacy controls are being honored when collecting data.
|
||||||
|
|
||||||
|
3.4.7.1. Allowed values
|
||||||
|
|
||||||
|
3.4.7.1.1. none
|
||||||
|
|
||||||
|
Data is collected even if any of the browser settings listed below
|
||||||
|
are in use. This value MUST NOT be used in conjunction with other
|
||||||
|
values.
|
||||||
|
|
||||||
|
3.4.7.1.2. do-not-track
|
||||||
|
|
||||||
|
User-Agents that have DoNotTrack [DNT] enabled will be excluded from
|
||||||
|
the collection of analytics data.
|
||||||
|
|
||||||
|
3.4.7.1.3. global-privacy-control
|
||||||
|
|
||||||
|
User agents that have Global Privacy Control [GPC] enabled will be
|
||||||
|
excluded from the collection of analytics data.
|
||||||
|
|
||||||
|
3.4.7.2. Example
|
||||||
|
|
||||||
|
Honors: do-not-track, global-privacy-control
|
||||||
|
|
||||||
|
3.4.8. Tracks
|
||||||
|
|
||||||
|
This OPTIONAL, RECOMMENDED multi-value field indicates the coverage
|
||||||
|
in session and user lifecycle tracking.
|
||||||
|
|
||||||
|
3.4.8.1. Allowed values
|
||||||
|
|
||||||
|
3.4.8.1.1. none
|
||||||
|
|
||||||
|
Each event that is collected is anonymous. There is no way to
|
||||||
|
connect and group multiple pageviews by user or similar. This value
|
||||||
|
MUST NOT be used in conjunction with other values.
|
||||||
|
|
||||||
|
3.4.8.1.2. sessions
|
||||||
|
|
||||||
|
Metrics that source from a single browser session can be grouped and
|
||||||
|
distinguished as such.
|
||||||
|
|
||||||
|
3.4.8.1.3. users
|
||||||
|
|
||||||
|
Users can be identified across multiple browser sessions.
|
||||||
|
|
||||||
|
3.4.8.2. Example
|
||||||
|
|
||||||
|
Tracks: sessions, users
|
||||||
|
|
||||||
|
3.4.9. Varies
|
||||||
|
|
||||||
|
This OPTIONAL, RECOMMENDED single-value field indicates the usage of
|
||||||
|
content experiments like A/B testing. It MUST contain a single value
|
||||||
|
only.
|
||||||
|
|
||||||
|
3.4.9.1. Allowed values
|
||||||
|
|
||||||
|
3.4.9.1.1. none
|
||||||
|
|
||||||
|
All users are served the same content without any changes. This
|
||||||
|
value MUST NOT be used in conjunction with other values.
|
||||||
|
|
||||||
|
3.4.9.1.2. random
|
||||||
|
|
||||||
|
Content experiments are performed by grouping users randomly into
|
||||||
|
buckets and serving them different content.
|
||||||
|
|
||||||
|
3.4.9.1.3. geographic
|
||||||
|
|
||||||
|
Content experiments are performed by targeting user based on their
|
||||||
|
geographic location.
|
||||||
|
|
||||||
|
3.4.9.1.4. behavioral
|
||||||
|
|
||||||
|
Content experiments are performed by grouping users into buckets
|
||||||
|
based on their behavior and serving them different content.
|
||||||
|
|
||||||
|
3.4.9.2. Example
|
||||||
|
|
||||||
|
Varies: random
|
||||||
|
|
||||||
|
3.4.10. Shares
|
||||||
|
|
||||||
|
This OPTIONAL, RECOMMENDED multi-value field indicates whether data
|
||||||
|
is shared with select users, the general public or third parties.
|
||||||
|
|
||||||
|
3.4.10.1. Allowed values
|
||||||
|
|
||||||
|
3.4.10.1.1. none
|
||||||
|
|
||||||
|
The data collected is not shared with any party unless directly
|
||||||
|
affiliated with the implementor, e.g. employees.
|
||||||
|
|
||||||
|
3.4.10.1.2. per-user
|
||||||
|
|
||||||
|
Users can access the usage data that is associated with them in a
|
||||||
|
non-aggregated way, isolating all data that is specific to their
|
||||||
|
current means of re-identification.
|
||||||
|
|
||||||
|
3.4.10.1.3. general-public
|
||||||
|
|
||||||
|
Usage statistics for the site or service are available to the general
|
||||||
|
public.
|
||||||
|
|
||||||
|
3.4.10.1.4. third-party
|
||||||
|
|
||||||
|
Data is being shared non-publicly with third parties. This MUST also
|
||||||
|
be specified when datasets are aggregated or pseudonymized
|
||||||
|
beforehand.
|
||||||
|
|
||||||
|
3.4.10.2. Example
|
||||||
|
|
||||||
|
Shares: general-public
|
||||||
|
|
||||||
|
3.4.11. Implements
|
||||||
|
|
||||||
|
This OPTIONAL field indicates conformance with existing regulations
|
||||||
|
and legislation. Values for this field SHOULD use all lowercase
|
||||||
|
tokens with whitespace being replaced by the dash character (%x2d).
|
||||||
|
|
||||||
|
Example values are:
|
||||||
|
|
||||||
|
* gdpr
|
||||||
|
|
||||||
|
* ccpa
|
||||||
|
|
||||||
|
3.4.11.1. Example
|
||||||
|
|
||||||
|
Implements: gdpr, ccpa
|
||||||
|
|
||||||
|
3.4.12. Deploys
|
||||||
|
|
||||||
|
This OPTIONAL field indicates which software is being used for
|
||||||
|
collecting analytics. Values for this field SHOULD use all lowercase
|
||||||
|
tokens with whitespace being replaced by the dash character (%x2d).
|
||||||
|
|
||||||
|
Example values are:
|
||||||
|
|
||||||
|
* google-analytics
|
||||||
|
|
||||||
|
* plausible
|
||||||
|
|
||||||
|
* hotjar
|
||||||
|
|
||||||
|
* matomo
|
||||||
|
|
||||||
|
3.4.12.1. Example
|
||||||
|
|
||||||
|
Deploys: google-analytics, hotjar
|
||||||
|
|
||||||
|
3.5. Examples of analytics.txt files
|
||||||
|
|
||||||
|
3.5.1. A site using analytics
|
||||||
|
|
||||||
|
# analytics.txt file for www.example.com
|
||||||
|
Author: Jane Doe <doe@example.com>
|
||||||
|
|
||||||
|
Collects: url, referrer, device-type
|
||||||
|
Stores: first-party-cookies, local-storage
|
||||||
|
# Usage data is encrypted end-to-end
|
||||||
|
Uses: javascript
|
||||||
|
# Users can also delete their usage data only without opting out
|
||||||
|
Allows: opt-in, opt-out
|
||||||
|
Retains: 186 days
|
||||||
|
|
||||||
|
# Optional fields
|
||||||
|
Honors: none
|
||||||
|
Tracks: sessions, users
|
||||||
|
Varies: none
|
||||||
|
Shares: per-user
|
||||||
|
Implements: gdpr
|
||||||
|
|
||||||
|
3.5.2. Specifying required fields only
|
||||||
|
|
||||||
|
Author: John Doe <doe@example.com>
|
||||||
|
Collects: url, ip-address, geo-location, user-agent, referrer, device-type, custom-events
|
||||||
|
Stores: none
|
||||||
|
Uses: javascript
|
||||||
|
Allows: none
|
||||||
|
Retains: perpetual
|
||||||
|
|
||||||
|
3.5.3. A site not using any analytics
|
||||||
|
|
||||||
|
# analytics.txt file for www.example.com
|
||||||
|
Author: Jane Doe <doe@example.com>
|
||||||
|
Collects: none
|
||||||
|
|
||||||
|
4. Location of the analytics.txt file
|
||||||
|
|
||||||
|
By default, an analytics.txt file SHOULD be placed in the ".well-
|
||||||
|
known" location as per [RFC8615] of a domain name or IP address.
|
||||||
|
|
||||||
|
4.1. Alternatives
|
||||||
|
|
||||||
|
In case implementors are unable to meet this requirement, other
|
||||||
|
options are available.
|
||||||
|
|
||||||
|
4.1.1. link Tag
|
||||||
|
|
||||||
|
Implementors MAY signal the location of an analytics.txt file in the
|
||||||
|
context of a HTML document using a link element of rel "analytics"
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
<link rel="analytics" href="https://example.com/resources/analytics.txt">
|
||||||
|
|
||||||
|
4.1.2. HTTP Header
|
||||||
|
|
||||||
|
Implementors MAY send an HTTP header of "X-Analytics-Txt" with a
|
||||||
|
response, sending the URI of the applicable file.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
X-Analytics-Txt: https://example.com/resources/analytics.txt
|
||||||
|
|
||||||
|
4.2. Precedence
|
||||||
|
|
||||||
|
In case multiple of these signals are being used, the precedence
|
||||||
|
taken is:
|
||||||
|
|
||||||
|
1. X-Analytics-Txt Header
|
||||||
|
|
||||||
|
2. link element
|
||||||
|
|
||||||
|
3. ".well-known" location
|
||||||
|
|
||||||
|
4.3. Scope of a file
|
||||||
|
|
||||||
|
An analytics.txt file located in the ".well-known" location MUST only
|
||||||
|
apply to the domain or IP address of the URI used to retrieve it, and
|
||||||
|
SHALL NOT apply to any of its subdomains or parent domains. If the
|
||||||
|
location is signaled using the HTTP Header or in the document markup
|
||||||
|
itself, its scope SHALL be limited to the requested resource only.
|
||||||
|
|
||||||
|
If distributed in non-standard locations, an analytics.txt file MAY
|
||||||
|
also apply to products and services provided by the organization
|
||||||
|
publishing the file (e.g. desktop or mobile applications) and which
|
||||||
|
cannot be mapped to a domain name or IP address. In such cases,
|
||||||
|
implementors MUST add sufficient commentary describing the applicable
|
||||||
|
scope.
|
||||||
|
|
||||||
|
5. Security Considerations
|
||||||
|
|
||||||
|
5.1. Incorrect or stale information
|
||||||
|
|
||||||
|
If information given in an "analytics.txt" file is incorrect or not
|
||||||
|
kept up to date, this can result in usage of services under wrong
|
||||||
|
assumptions, thus exposing users to possibly unwanted data collection
|
||||||
|
and handling. Not having an "analytics.txt" file may be preferable
|
||||||
|
to having incorrect or stale information in this file. This
|
||||||
|
guideline also applies to field level: in case of ambiguities or
|
||||||
|
uncertainties, it's recommended to omit a field or a value rather
|
||||||
|
than providing incorrect information. Implementors MUST use the
|
||||||
|
"Author" field (see Section 3.4.1) to allow inquiries about the
|
||||||
|
correctness of the given information.
|
||||||
|
|
||||||
|
5.2. Spam
|
||||||
|
|
||||||
|
Implementors should be aware that disclosing mandatory author
|
||||||
|
information as per Section 3.4.1 in such a file exposes them to
|
||||||
|
possible Spam schemes or spurious requests.
|
||||||
|
|
||||||
|
5.3. Multi-user environments
|
||||||
|
|
||||||
|
In multi-user / multi-tenant environments, it may possible for a
|
||||||
|
single user to take over the location of the "/.well-known/
|
||||||
|
analytics.txt" file which would also apply to others. Organizations
|
||||||
|
should ensure the ".well-known" location is properly protected.
|
||||||
|
Implementors can instead use other locations as per Section 4 in such
|
||||||
|
scenarios.
|
||||||
|
|
||||||
|
6. IANA Considerations
|
||||||
|
|
||||||
|
6.1. Well-Known URIs registry
|
||||||
|
|
||||||
|
The "Well-Known URIs" registry should be updated with the following
|
||||||
|
additional values (using the template from [RFC8615]):
|
||||||
|
|
||||||
|
URI suffix: analytics.txt
|
||||||
|
|
||||||
|
Specification document(s): this document
|
||||||
|
|
||||||
|
Status: permanent
|
||||||
|
|
||||||
|
7. References
|
||||||
|
|
||||||
|
7.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://datatracker.ietf.org/doc/html/rfc2119>.
|
||||||
|
|
||||||
|
[RFC5322] Resnick, P., Ed., "Internet Message Format", RFC 5322,
|
||||||
|
DOI 10.17487/RFC5322, October 2008,
|
||||||
|
<https://datatracker.ietf.org/doc/html/rfc5322>.
|
||||||
|
|
||||||
|
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
|
||||||
|
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
|
||||||
|
May 2017, <https://datatracker.ietf.org/doc/html/rfc8174>.
|
||||||
|
|
||||||
|
[RFC8615] Nottingham, M., "Well-Known Uniform Resource Identifiers
|
||||||
|
(URIs)", RFC 8615, DOI 10.17487/RFC8615, May 2019,
|
||||||
|
<https://datatracker.ietf.org/doc/html/rfc8615>.
|
||||||
|
|
||||||
|
7.2. Informative References
|
||||||
|
|
||||||
|
[DNT] Fielding, R.T. and D. Singer, "Tracking Preference
|
||||||
|
Expression (DNT)", n.d.,
|
||||||
|
<https://www.w3.org/TR/tracking-dnt/>.
|
||||||
|
|
||||||
|
[GPC] Berjon, R., Zimmeck, S., Soltani, A., Harbage, D., and P.
|
||||||
|
Snyder, "Global Privacy Control (GPC)", n.d.,
|
||||||
|
<https://globalprivacycontrol.github.io/gpc-spec/>.
|
||||||
|
|
||||||
|
[RFC5234] Crocker, D., Ed. and P. Overell, "Augmented BNF for Syntax
|
||||||
|
Specifications: ABNF", STD 68, RFC 5234,
|
||||||
|
DOI 10.17487/RFC5234, January 2008,
|
||||||
|
<https://datatracker.ietf.org/doc/html/rfc5234>.
|
||||||
|
|
||||||
|
Appendix A. Acknowledgments
|
||||||
|
|
||||||
|
The authors would like to acknowledge the feedback and input provided
|
||||||
|
during the creation of this document as given by Michiel Leenaars,
|
||||||
|
Cyrill Kraehenbuehl, Lasse Voss.
|
||||||
|
|
||||||
|
Authors' Addresses
|
||||||
|
|
||||||
|
Frederik Ring
|
||||||
|
Offen
|
||||||
|
|
||||||
|
Email: frederik.ring@gmail.com
|
||||||
|
|
||||||
|
|
||||||
|
Hendrik Niefeld
|
||||||
|
Offen
|
||||||
|
|
||||||
|
Email: hello@niefeld.com
|
61
index.html
Normal file
61
index.html
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>offen/analyticstxt main preview</title>
|
||||||
|
<meta name="viewport" content="initial-scale=1.0">
|
||||||
|
<style type="text/css">/*<![CDATA[*/
|
||||||
|
body { font-family: "Helvetica Neue","Open Sans", Helvetica, Calibri,sans-serif; }
|
||||||
|
h1, h2, td { font-family: "Helvetica Neue", "Roboto Condensed", "Open Sans", Helvetica, Calibri, sans-serif; }
|
||||||
|
h1 { font-size: 20px; } h2 { font-size: 16px; }
|
||||||
|
table { margin: 5px 10px; border-collapse: collapse; }
|
||||||
|
th, td { font-weight: normal; text-align: left; padding: 2px 5px; }
|
||||||
|
a:link { color: #000; } a:visited { color: #00a; }
|
||||||
|
/*]]>*/</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>Editor's drafts for main branch of <a href="https://github.com/offen/analyticstxt">offen/analyticstxt</a></h1>
|
||||||
|
<p>View <a href="issues.html">saved issues</a>, or the latest GitHub <a href="https://github.com/offen/analyticstxt/issues">issues</a> and <a href="https://github.com/offen/analyticstxt/pulls">pull requests</a>.</p>
|
||||||
|
<table id="branch-main">
|
||||||
|
<tr>
|
||||||
|
<th>draft-ring-analyticstxt</th>
|
||||||
|
<td><a href="./draft-ring-analyticstxt.html" class="html draft-ring-analyticstxt">html</a></td>
|
||||||
|
<td><a href="./draft-ring-analyticstxt.txt" class="txt draft-ring-analyticstxt">plain text</a></td>
|
||||||
|
<td><a href="https://tools.ietf.org/rfcdiff?url1=https://tools.ietf.org/id/draft-ring-analyticstxt.txt&url2=https://offen.github.io/analyticstxt/draft-ring-analyticstxt.txt" class="diff draft-ring-analyticstxt">diff with last submission</a></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<h2>Preview for branch <a href="draft-ring-analyticstxt-02">draft-ring-analyticstxt-02</a></h2>
|
||||||
|
<table id="branch-draft-ring-analyticstxt-02">
|
||||||
|
<tr>
|
||||||
|
<th>draft-ring-analyticstxt</th>
|
||||||
|
<td><a href="draft-ring-analyticstxt-02/draft-ring-analyticstxt.html" class="html draft-ring-analyticstxt">html</a></td>
|
||||||
|
<td><a href="draft-ring-analyticstxt-02/draft-ring-analyticstxt.txt" class="txt draft-ring-analyticstxt">plain text</a></td>
|
||||||
|
<td><a href="https://tools.ietf.org/rfcdiff?url1=https://offen.github.io/analyticstxt/draft-ring-analyticstxt.txt&url2=https://offen.github.io/analyticstxt/draft-ring-analyticstxt-02/draft-ring-analyticstxt.txt">diff with main</a></td>
|
||||||
|
<td><a href="https://tools.ietf.org/rfcdiff?url1=https://tools.ietf.org/id/draft-ring-analyticstxt.txt&url2=https://offen.github.io/analyticstxt/draft-ring-analyticstxt-02/draft-ring-analyticstxt.txt" class="diff draft-ring-analyticstxt">diff with last submission</a></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<script>
|
||||||
|
// @licstart
|
||||||
|
// Any copyright is dedicated to the Public Domain.
|
||||||
|
// http://creativecommons.org/publicdomain/zero/1.0/
|
||||||
|
// @licend
|
||||||
|
window.onload = function() {
|
||||||
|
var referrer_branch = 'main';
|
||||||
|
// e.g., "https://github.com/user/repo/tree/main"
|
||||||
|
var chunks = document.referrer.split("/");
|
||||||
|
if (chunks[2] === 'github.com' && chunks[5] === 'tree') {
|
||||||
|
referrer_branch = chunks[6];
|
||||||
|
}
|
||||||
|
let branch = document.querySelector('#branch-' + referrer_branch);
|
||||||
|
let h = document.location.hash.substring(1);
|
||||||
|
if (h === 'show') {
|
||||||
|
document.location.hash = '#' + branch.id;
|
||||||
|
} else if (branch && h.startsWith('go')) {
|
||||||
|
let e = branch.querySelector(h.substring(2));
|
||||||
|
if (e && e.href) {
|
||||||
|
document.location = e.href;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
Loading…
Reference in New Issue
Block a user