jani...@chromium.org, awi...@chromium.org, mike...@chromium.org
https://github.com/wanderview/quota-storage-partitioning/blob/main/explainer.md
Firefox and Safari have provided support on speccing these changes and we will implement this alongside working on the Chromium Implementation. ( Opened 4 years ago#153 Blob URL store partitioning ).
As a continuation of Storage Partitioning, Chromium will implement partitioning of Blob URL access by Storage Key (top-level site, frame origin, and the has-cross-site-ancestor boolean), with the exception of navigations which will remain partitioned only by frame origin. This behavior is similar to what’s currently implemented by both Firefox and Safari, and aligns Blob URL usage with the partitioning scheme used by other storage APIs as part of Storage Partitioning. In addition, Chromium will enforce noopener on renderer-initiated navigations to Blob URLs where the corresponding site is cross-site to the top-level site performing the navigation. This aligns Chromium with similar behavior in Safari, and we will pursue spec updates to reflect both of these changes.
The general blob URL partitioning was included in the original review for third-party storage partitioning (https://github.com/w3ctag/design-reviews/issues/629). The implementation details have changed slightly but not enough to warrant a new TAG review.
N/A
Restricting Blob URL fetches by Storage Key means that sites using Blob URLs across top-level site boundaries or in frames with a cross-site ancestor may break. In addition, enforcing noopener for Blob URLs navigated to from contexts with different top-level sites may result in site breakage. Given that Firefox and Safari have already shipped similar features, and given that Storage Partitioning has already introduced partitioning by Storage Key to restrict most other storage and communications APIs, this change seems web compatible.
Gecko: Firefox already partitions Blob URL fetches by storage key using the same storage key implementation as Chrome. They also have expressed support for enforcing noopener on cross-site Blob URL navigation. https://github.com/w3c/FileAPI/issues/153#issuecomment-2332288047
WebKit: WebKit already partitions Blob URL fetches by top-level origin and enforces noopener on cross-top-level-origin Blob URL navigations. They are currently investigating moving to a site boundary instead of an origin boundary. https://github.com/w3c/FileAPI/issues/153#issuecomment-2332086739
Web developers: No signals
Other signals:
Does this intent deprecate or change behavior of existing APIs, such that it has potentially high risk for Android WebView-based applications?
None. In general, storage partitioning hasn’t launched on WebView.
We are exploring ways to notify developers when they encounter these changes to Blob URL usage, such as raising DevTools Issues.
All except WebView.
Yes
https://wpt.fyi/results/FileAPI/BlobURL?label=experimental&label=master&aligned
None
EnforceNoopenerOnBlobURLNavigation, BlockCrossPartitionBlobUrlFetching
No.
We plan to be feature complete by M132.
Open questions about a feature may be a source of future web compat or interop issues. Please list open issues (e.g. links to known github issues in the project for the feature specification) whose resolution may introduce web compat/interop risk (e.g., changing to naming or structure of the API in a non-backward-compatible way).
https://github.com/w3c/FileAPI/issues/153
https://chromestatus.com/feature/5130361898795008?gate=6298001774215168
Contact emails
jani...@chromium.org, awi...@chromium.org, mike...@chromium.org
Explainer
https://github.com/wanderview/quota-storage-partitioning/blob/main/explainer.md
Specification
Firefox and Safari have provided support on speccing these changes and we will implement this alongside working on the Chromium Implementation. ( Opened 4 years ago#153 Blob URL store partitioning ).
--
You received this message because you are subscribed to the Google Groups "blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+...@chromium.org.
To view this discussion visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAGspLPiMu-dV2eRJyTSXMZu1S5zCnBsDaMqkFmdSaQbgFitfwg%40mail.gmail.com.
After discussing this on the API OWNER meeting I have a few questions and suggestions.
My main concern is that we don't have full understanding of the compatibility risk. We believe this is rare, but do we have any hard data to confirm that? If not, would it be possible to add a targetted use counter that counts the cases where a page tries to use a broken blob?
I think you should also request formal signals from Gecko and WebKit since this is not exactly what they have done. It seems from what you write that we're getting something very slightly different (which also means that what seems to work for them might still break in Chromium).
/Daniel
--
You received this message because you are subscribed to the Google Groups "blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+...@chromium.org.
Hey everyone,From looking at use counters for these cases, cross-top-level-site Blob URL navigations that would have noopener set as part of this change are seen on 0.0004% of page loads. Note that this is calculated from data from pre-stable channels and could change when looking at Stable data, but it seems unlikely to change by orders of magnitude.For cross-partition Blob URL fetches, these occur on 0.21% of page loads, but from digging into this more and from looking at UMA data, at least 83% of those cross-partition Blob URL fetches are guaranteed to be blocked today because they are also cross-origin, and only ~21% of UMA-enabled clients reported at least one cross-partition fetch that wasn't guaranteed to be blocked. It's likely that the remaining 17% of cross-partition Blob URL fetches are cross-origin as well and would already be blocked, but our current use counter / metrics implementations don't provide a way to gauge this. More details on this analysis can be found at: https://crbug.com/387655548#comment2
Hi everyone,Quick update on this. We landed a new use counter implementation last week that better gauges actual breakage, and preliminary data from Chrome Canary shows that no instances of breakage were detected except for a few from yesterday, and those likely correspond to me running the partitioning tests on wpt.fyi locally to confirm that the use counter actually works as intended. :) For reference, there are orders of magnitude more instances of the BlobStoreAccessAcrossTopLevelSite use counter (which we used for the previous breakage analysis) being reported for the same Chrome Canary clients and during the same time period. I'll check the "real" use counter data once it's available in Chrome Status, but I suspect the percentage of page loads that would break will be significantly lower than we calculated earlier.Also, before launching we plan to integrate with the Storage Access API so that contexts that have been granted a StorageAccessHandle will still be able to fetch Blob URLs in the same way they could before this change (so, without regard to top-level site or the "has-cross-site-ancestor" boolean)
I am recused from giving LGTMs on this one, but the new use
counters and other mitigations (enterprise policy, finch
killswitch, chrome://flags entry) suggest to me that the risk is
low, and if we get it wrong, we can undo the change.
To view this discussion visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/a69a3de1-ebc7-4119-976b-cbe65468cb3e%40chromium.org.
-Andrew
To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+unsubscribe@chromium.org.
--
You received this message because you are subscribed to the Google Groups "blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+unsubscribe@chromium.org.
--
You received this message because you are subscribed to the Google Groups "blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+unsubscribe@chromium.org.
-Andrew
To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+...@chromium.org.
--
You received this message because you are subscribed to the Google Groups "blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+...@chromium.org.
--
You received this message because you are subscribed to the Google Groups "blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+...@chromium.org.