-
Notifications
You must be signed in to change notification settings - Fork 35
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
draft of clarity and concision pass on sections 2.1 through 2.5 #136
Changes from 1 commit
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -100,14 +100,14 @@ may be useful when doing so. | |
<h2 id="questions">Questions to Consider</h2> | ||
|
||
<h3 class=question id="purpose"> | ||
What information might this feature expose to Web sites or other parties, | ||
and for what purposes is that exposure necessary? | ||
What information does this feature expose, | ||
and for what purposes? | ||
</h3> | ||
|
||
User Agents should only expose information to the web | ||
User agents should only expose information to the Web | ||
when doing so is necessary to serve a clear user need. | ||
Does your feature expose information to origins? | ||
If so, how does exposing this information serve user needs? | ||
Does your feature expose information to wbe sites? | ||
If so, how does exposing this information benefit the user? | ||
Are the risks to the user outweighed by the benefits to the user? | ||
If so, how? | ||
|
||
|
@@ -140,13 +140,14 @@ characteristics). | |
|
||
<h3 class=question id="minimum-data"> | ||
Do features in your specification expose the minimum amount of information | ||
necessary to enable their intended uses? | ||
necessary to implement the intended functionality? | ||
</h3> | ||
|
||
Features should only expose information | ||
when it's absolutely necessary to satisfy use cases. | ||
when it's absolutely necessary. | ||
If a feature exposes more information than is necessary, | ||
why does it do so? | ||
why does it do so, and can that the same functionality be achieved by | ||
exposing less information? | ||
|
||
See also | ||
|
||
|
@@ -160,17 +161,17 @@ mitigated the risk by reducing a policy's granularity after a redirect. | |
</p> | ||
|
||
<h3 class=question id="personal-data"> | ||
How do the features in your specification deal with personal information, | ||
Do the features in your specification expose personal information, | ||
personally-identifiable information (PII), or information derived from | ||
them? | ||
either? | ||
</h3> | ||
|
||
Personal information is any data about a user | ||
(for example, their home address), | ||
or information that could be used to identify a user, | ||
such as an alias, email address, or identification number. | ||
|
||
Note: Personal information is | ||
Personal information is | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I think this should stay in a Note block. |
||
distinct from personally identifiable information | ||
(<abbr title="personally identifiable information">PII</abbr>). | ||
PII is a legal concept, | ||
|
@@ -182,7 +183,8 @@ that could be used to identify a user. | |
|
||
When exposing | ||
personal information, PII, or derivative information, | ||
spec authors must take steps to minimize the potential harm to users. | ||
specification authors must prevent or, when prevention is not possible, minimize | ||
potential harm to users. | ||
|
||
<p class=example> | ||
A feature | ||
|
@@ -311,22 +313,22 @@ See also | |
* [[DESIGN-PRINCIPLES#do-not-expose-use-of-assistive-tech]] | ||
|
||
<h3 class=question id="persistent-origin-specific-state"> | ||
Do the features in your specification introduce new state for an origin | ||
Do the features in your specification introduce state | ||
that persists across browsing sessions? | ||
</h3> | ||
|
||
There are many existing mechanisms | ||
The Web platform already includes many mechanisms | ||
origins can use to | ||
store information about a user. | ||
store information. | ||
Cookies, | ||
`ETag`, | ||
`Last Modified`, | ||
{{localStorage}}, | ||
and | ||
{{indexedDB}} | ||
{{indexedDB}}, | ||
are just a few examples. | ||
|
||
Allowing an origin | ||
Allowing a website | ||
to store data | ||
on a user’s device | ||
in a way that persists across browsing sessions | ||
|
@@ -336,52 +338,34 @@ to track a user | |
without their knowledge or control, | ||
either in [=first-party-site context|first-=] or [=third-party context|third-party=] contexts. | ||
|
||
One of the ways | ||
user agents mitigate the risk | ||
that client-side storage mechanisms | ||
will form a persistent identifier | ||
One way | ||
user agents prevent origins from | ||
abusing client-side storage mechanisms | ||
is by providing users with the ability | ||
to clear out the data stored by origins. | ||
New state persistence mechanisms | ||
should not be introduced | ||
without mitigations | ||
to prevent them | ||
from being used | ||
to track users | ||
across domains | ||
or without control | ||
over clearing this state. | ||
That said, | ||
manually clearing storage | ||
is something users do only rarely. | ||
to clear data stored by origins. | ||
Specification authors should include similar | ||
protections to make sure that new | ||
client-side storage mechanisms | ||
cannot be misused to track users across domains | ||
without their control. | ||
However, just giving users the ability | ||
to delete origin-set state is usually | ||
not sufficient. since users rarely | ||
manually clear browser state. | ||
Spec authors should consider ways | ||
to make new features more privacy-preserving without full storage clearing, | ||
such as | ||
reducing the uniqueness of values, | ||
rotating values, | ||
or otherwise making features no more identifying than is needed. | ||
<!-- https://github.com/w3ctag/design-principles/issues/215 --> | ||
Also, keep in mind that | ||
user agents make use of several different caching mechanisms. | ||
Which, if any, caches will store this new state? | ||
Are additional mitigations necessary? | ||
|
||
<div class=example> | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I got rid of this example bc i think it doesn't seem to be demonstrating how persistent storage can be abused (it seems to be demonstrating how service workers can be abused, whether or not they persist across sessions |
||
|
||
Service Workers | ||
intercept all requests made by an origin, | ||
which enables sites | ||
to continue to function when the browser goes offline. | ||
Because of this, | ||
a maliciously-injected service worker | ||
could compromise the user (as documented in [[SERVICE-WORKERS#security-considerations]]). | ||
|
||
The spec mitigates the risks | ||
an [=active network attacker=] or [=XSS=] vulnerability present | ||
by limiting service worker registration to [=secure contexts=]. | ||
[[SERVICE-WORKERS]] | ||
|
||
</div> | ||
Additionally, specification authors | ||
should carefully consider and specify, when possible, | ||
how their features should interact with browser caching | ||
features. Additional mitigations may be necessary to | ||
prevent origins from abusing caches to | ||
identify and track users across sites or sessions without user consent. | ||
|
||
<p class=example> | ||
Platform-specific DRM implementations | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
*web
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Look, if you're going to expect me to spell everything correctly, we're going to be at this for a long time :P