Description
Recall that origin isolation is specified in terms of the web-observable effects of deprecating certain legacy APIs. This gives the browser the option to put the origin in its own process, but it does not guarantee it. In particular:
- Some browsers might not implement the technology necessary to do so (out-of-process iframes)
- Some browsers might decide that the memory overhead is not worthwhile, depending on the device in question (e.g. low-memory Android phones)
- Some browsers might use other isolation technologies, like (for Chromium) "Blink isolates", to give performance isolation but not the same security-isolation that processes provide
Additionally, there is the case where the user may have visited another, non-isolated page on the origin, in the same browsing context group, which makes origin isolation not apply at all (much less give process-per-origin semantics).
Unfortunately, Chrome folks have noticed a few instances where people thought the Origin-Isolation header gave security guarantees:
- One internal team bundled COOP and Origin-Isolation, on the misunderstanding that they were both security isolation primitives
- https://bugs.chromium.org/p/chromium/issues/detail?id=1151223 was originally filed as a security bug report, from a member of the Edge security team, talking about how to use blob: URLs to "escape" origin isolation.
- Sometimes we've given internal talks about security projects, and said unfortunate things like "first we did site isolation, and now we're allowing you to opt in to origin isolation!" I.e., the Chrome security team has been using the "site isolation" branding for years as as security feature indicating site-per-process, so the fact that origin isolation is not necessarily origin-per-process makes for some gaffes.
As such, we're considering if it might be better to rename the header, so that it's more obvious that (a) it's not security isolation in the same sense of "cross-origin isolated"; and/or (b) it's a request that not always able to be fulfilled. Ideas we've come up with so far are:
-
Origin-Performance-Isolation
: a little narrow and not perfectly accurate, but hopefully makes people realize the main use case is not security-related. -
Origin-Keyed-Agents
orOrigin-Keyed-Agent-Cluster
: extra jargon, which should hopefully make people read the documentation. Could also prefix withRequest-
to indicate the failure mode where something else in the BCG prevents it from taking effect. -
Origin-Keying
orRequest-Origin-Keying
: similar to the previous bullet, but a little less jargony
Any thoughts? @annevk