On Tue, Jul 11, 2023 at 1:08 PM Mingyu Lei <le...@google.com> wrote:Contact emails
kenji...@chromium.org, fer...@chromium.org, deno...@chromium.org, le...@chromium.orgSpecification
https://github.com/fergald/explainer-bfcache-ccns/blob/main/README.mdDesign docs
https://docs.google.com/document/d/1qX1w6L6laTzpFTh78dvT7wwC1060Z3he2Azp4BAwsUE/edit?usp=sharing
https://github.com/fergald/explainer-bfcache-ccns/blob/main/README.mdSummary
A behavior change to safely store (and restore) pages in the Back/Forward Cache despite the presence of a "Cache-control: no-store" HTTP header on HTTPS pages. This would allow pages to enter BFCache and be restored as long as there are no changes to cookies or to RPCs using the `Authorization:` header.
Blink component
UI>Browser>Navigation>BFCacheSearch tags
bfcacheTAG review
TAG review status
Not applicableRisks
Interoperability and Compatibility
Gecko: No signal
WebKit: No signal
Web developers: No signals
Other signals:WebView application risks
Does this intent deprecate or change behavior of existing APIs, such that it has potentially high risk for Android WebView-based applications?
None
Debuggability
Will this feature be supported on all six Blink platforms (Windows, Mac, Linux, Chrome OS, Android, and Android WebView)?
NoBFCache is not supported on WebView, so this change has no impact there.
Is this feature fully tested by web-platform-tests?
NoFlag name on chrome://flags
Finch feature name
CacheControlNoStoreEnterBackForwardCacheRequires code in //chrome?
FalseTracking bug
https://bugs.chromium.org/p/chromium/issues/detail?id=1228611Launch bug
https://launch.corp.google.com/launch/4251651Estimated milestones
DevTrial on desktop 116
DevTrial on Android 116 Anticipated spec changes
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).
NoneLink to entry on the Chrome Platform Status
https://chromestatus.com/feature/6705326844805120Links to previous Intent discussions
This intent message was generated by Chrome Platform Status.
On 7/11/23 2:19 AM, 'Fergal Daly' via blink-dev wrote:
[BCC chrome-...@google.com]
On Tue, 11 Jul 2023 at 15:16, Mingyu Lei <le...@google.com> wrote:
On Tue, Jul 11, 2023 at 1:08 PM Mingyu Lei <le...@google.com> wrote:
Contact emails
kenji...@chromium.org, fer...@chromium.org, deno...@chromium.org, le...@chromium.org
Specification
https://github.com/fergald/explainer-bfcache-ccns/blob/main/README.md
Design docs
https://docs.google.com/document/d/1qX1w6L6laTzpFTh78dvT7wwC1060Z3he2Azp4BAwsUE/edit?usp=sharing
https://github.com/fergald/explainer-bfcache-ccns/blob/main/README.md
This is a really well-written explainer, thank you!
One point of clarification:
https://github.com/fergald/explainer-bfcache-ccns/blob/main/README.md#secure-cookies
references "HTTPS-only" cookies, as well as "secure" vs "insecure"
cookies. By "HTTPS-only", do you mean a cookie that sets the
"secure" attribute (including "__Secure-" prefixes), _and_ sets
"HttpOnly"? Or something else?
Later in https://github.com/fergald/explainer-bfcache-ccns/blob/main/README.md#allow-ccns-documents-to-be-bfcached-without-the-api, the proposal is that CCNS pages are safe to bfcache if no "HTTP-only" cookies have changed. Are these cookies setting only the "HttpOnly" attribute, or is this intended to say "HTTPS-only" as above?
Summary
A behavior change to safely store (and restore) pages in the Back/Forward Cache despite the presence of a "Cache-control: no-store" HTTP header on HTTPS pages. This would allow pages to enter BFCache and be restored as long as there are no changes to cookies or to RPCs using the `Authorization:` header.
Blink component
UI>Browser>Navigation>BFCache
Search tags
bfcache
TAG review
TAG review status
Not applicable
Risks
Interoperability and Compatibility
I'm curious if y'all have looked at stats on the uptake of secure/httponly cookies vs "non-secure" cookies being set by pages returned from RPCs sent with an Authorization header (though I wouldn't be surprised if we don't have UMA for that... perhaps just globally would be useful to consider).
My only concern (which may not be grounded in reality) would be
for sites not following best practices...
Gecko: No signal
WebKit: No signal
--
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 on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAAozHLkbL7vmubNOsrA2PKngz4xeV%3DXyuLN73oS4XBea50Xe9A%40mail.gmail.com.
To me this seems to be touching a sensitive area and I'm not
certain how this will play out in the real world.
Even if cache-control: no-store is being badly overused, and the numbers you list seem to indicate that is the case, hasn't there been a promise to web developers that such a resource will be forever gone once the page is no longer shown, and is that a promise that can reasonably be broken?
I really don't know.
/Daniel
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/d0aac097-9f2c-29dc-6f9b-03a757528151%40chromium.org.
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/892c9b75-e073-97cb-1a20-9dd6c0c01042%40gmail.com.
https://github.com/fergald/explainer-bfcache-ccns/blob/main/README.md#secure-cookies references "HTTPS-only" cookies, as well as "secure" vs "insecure" cookies. By "HTTPS-only", do you mean a cookie that sets the "secure" attribute (including "__Secure-" prefixes), _and_ sets "HttpOnly"? Or something else?
Later in https://github.com/fergald/explainer-bfcache-ccns/blob/main/README.md#allow-ccns-documents-to-be-bfcached-without-the-api, the proposal is that CCNS pages are safe to bfcache if no "HTTP-only" cookies have changed. Are these cookies setting only the "HttpOnly" attribute, or is this intended to say "HTTPS-only" as above?
I see that https://github.com/w3ctag/design-reviews/issues/786#issuecomment-1515742477 references this work. Did we learn anything from experimentation in the wild (not sure if y'all ran an experiment)?
I'm curious if y'all have looked at stats on the uptake of secure/httponly cookies vs "non-secure" cookies being set by pages returned from RPCs sent with an Authorization header (though I wouldn't be surprised if we don't have UMA for that... perhaps just globally would be useful to consider).
My only concern (which may not be grounded in reality) would be for sites not following best practices...
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAN_fHtnGnrwo9wQXehgHkfoCYXa7icVqivTUC-ZuimKHkGbY1g%40mail.gmail.com.
Thanks for the additional analysis. Another question I have, if a site sends:
"Cache-Control: no-cache, no-store, must-revalidate" (copypasta from https://stackoverflow.com/a/2068407),
would it be treated differently as "Cache-Control: no-store"? I'm trying to think of signals that might be useful as
heuristics for "no seriously don't ever cache this"...
Thanks for the additional analysis. Another question I have, if a site sends:
"Cache-Control: no-cache, no-store, must-revalidate" (copypasta from https://stackoverflow.com/a/2068407), would it be treated differently as "Cache-Control: no-store"? I'm trying to think of signals that might be useful as heuristics for "no seriously don't ever cache this"...
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/561ff7c5-45aa-0c9e-8157-924199f82fb4%40chromium.org.
In this whole discussion I am missing input from web developers. They must have expectations and opinions on these flags, but what do we know about their expectations and opinons? What is best industry practices? Is there a way to get more of that kind of input?
/Daniel
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CADWWn7Uz7cBv1ux4oGkUG%3Dm6YxYpuZ5RDdNSEyT1ECVPVHC10Q%40mail.gmail.com.
Hey Mingyu & Fergal,Given the fact that getting this heuristic wrong can have *significant* negative implications on impacted users, I think we need to be very careful here.I'd love to see a plan to validate the heuristic we'd pick here such that its coverage is as close to 100% as we can in terms of hitting the "excessive cache limits" bucket (and missing the "user sensitive data" bucket). Alternatively, maybe we could use a mix of outreach and a new API (or fix Clear-Site-Data) to help us fish out the "excessive cache limits" crowd?
It's important to clarify something. Our goal is not to avoid restoring pages containing *any* sensitive data. Our goal is to avoid restoring pages containing sensitive data that the user no longer has access to. If cookies have not changed, then the browser's HTTP request will be the same as last time and our assumption is that the decisions about access will also be the same. We know this assumption is not entirely correct, resources could be deleted or access could be changed on the server, hence our shorter timeout. We can break the problem down as follows
changes on the client result is loss of access (e.g. cookies/access-tokens changed/deleted) - we believe this is covered
changes on the server results in loss of access - this breaks down further
site has implemented a way to immediately reflect those changes to open pages, e.g. using EventSource - this will continue to work either by causing them to be evicted or by delivering events as soon as they are restored from BFCache
site has not implemented a way to immediately reflect those changes to open pages - in this case users can hold onto this data indefinitely. We are adding an additional window where this data could also reappear from BFCache. It would be surprising for a site to be concerned about the latter but not with the former.
XMLHttpRequest, fetch, WebTransport, WebRTC, WebSocket complicate this as they give a route for sensitive data to appear in the page outside of navigation-driven requests and that is why we block restoring if we see any of those (for XHR and fetch we only block if the response is CCNS, for the others we simply have to assume that all data is sensitive).
Given all that, we don't have any way to estimate how often it would happen that sensitive content that the user has lost access to would appear from BFCache. If we had a way to measure it, we would probably use that as a heuristic to prevent BFCaching. We believe it would only happen if e.g. a server-side change removed the user's access to the data as discussed above.
There is an implicit promise that comes from the fact that CCNS has blocked BFCache. It’s inevitable that some sites have already set their expectations on the CCNS header blocking BFCache. Some sites will malfunction when they start to be restored from BFCache. This was also true when we launched BFCache for non-CCNS sites.
We believe that BFCache is a huge user benefit. We launched it knowing that some pages would malfunction. The benefit to users outweighs the cost of some devs having to update their sites to work with BFCache. We don't think CCNS sites should get a special pass. The concern with CCNS-sites is that they often deal with sensitive information and that is why we have put so much effort into making sure that that kind of information is not inappropriately resurfaced as a result of BFCache. There may be other types of malfunction due to BFCache. It seems like those kinds of problems should be subject to the same calculus of user benefit vs dev cost as went into the original BFCache launch.
Thanks for the additional analysis. Another question I have, if a site sends:
"Cache-Control: no-cache, no-store, must-revalidate" (copypasta from https://stackoverflow.com/a/2068407), would it be treated differently as "Cache-Control: no-store"? I'm trying to think of signals that might be useful as heuristics for "no seriously don't ever cache this"...
Thanks for your answers. I think we are on the same page since I too consider this to be of high value to users. The difference in perceived performance is so large that I understand that it is worth adding some magic for.
On the other hand, as you also know, there is a risk and I want to be sure that it is fully understood. You have mentioned a shorter timeout a couple of times, and the explainer says it will be 3 minutes instead of the default 10 minute cache timeout. I'm well aware of sites that time out authentications server side after a couple of minutes of inactivity and I guess 3 would be in the same ball park. Did you pick that particular number for any particular reason. Is it the lowest number that still gives any benefits?
/Daniel
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAAozHL%3D0vS96LyxmMgf7C7U93FudaP6k7OLX0MKq5jdW5fNZzA%40mail.gmail.com.
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAN_fHtmo4p9pYZ3HNGqped8MCBfTWXuNd_VC%3DoV4PHEVi73W%3DA%40mail.gmail.com.
Thanks for your answers. I think we are on the same page since I too consider this to be of high value to users. The difference in perceived performance is so large that I understand that it is worth adding some magic for.
On the other hand, as you also know, there is a risk and I want to be sure that it is fully understood. You have mentioned a shorter timeout a couple of times, and the explainer says it will be 3 minutes instead of the default 10 minute cache timeout. I'm well aware of sites that time out authentications server side after a couple of minutes of inactivity and I guess 3 would be in the same ball park. Did you pick that particular number for any particular reason. Is it the lowest number that still gives any benefits?
This is potentially a naive question, since I'm not familiar with all of the CC headers, but how would the following situation work (or rather how is this meant to work?):I have an "overview" page that lists some items that come from a database. This page has an input box with a button to add a new item. The way the button works is it POSTs to the same page to add an entry into some database, and then redirects to a new "details" page. The "overview" page also currently sends CCNS, so that when the user clicks back from the "details" page, they see an updated list which was re-fetched from the server. Without CCNS, going back hits BFCache and the list is not up to date.
Is there a simple solution to this if CCNS doesn't prevent BFCache?
On Fri, 8 Sept 2023 at 02:21, Vladimir Levin <vmp...@chromium.org> wrote:This is potentially a naive question, since I'm not familiar with all of the CC headers, but how would the following situation work (or rather how is this meant to work?):I have an "overview" page that lists some items that come from a database. This page has an input box with a button to add a new item. The way the button works is it POSTs to the same page to add an entry into some database, and then redirects to a new "details" page. The "overview" page also currently sends CCNS, so that when the user clicks back from the "details" page, they see an updated list which was re-fetched from the server. Without CCNS, going back hits BFCache and the list is not up to date.That seems correct and is a problem with BFCache in general. E.g. you hit back and your shopping cart has the wrong number of items.Is there a simple solution to this if CCNS doesn't prevent BFCache?The one-size-fits-all solutions is something likeaddEventListener("pageshow", e => {
if (e.persisted) {
document.body.innerHTML = "";
location.reload();
}
})
Which is not great for users but also not terrible, the time to load will be increased by the duration of a BFCache restore which is mostly < 100ms and much less on a fast device.
The better UX would be to have a `pageshow` handler that refreshes just the data that needs refreshing. The difficulty of doing that is heavily dependent on the site design,
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAAozHLmW2XCFC1d61x1r%2B1c8z_PqoukKOs0EDgDct9cPvRc4eQ%40mail.gmail.com.
On Mon, Sep 11, 2023 at 8:46 AM 'Fergal Daly' via blink-dev <blin...@chromium.org> wrote:On Fri, 8 Sept 2023 at 02:21, Vladimir Levin <vmp...@chromium.org> wrote:This is potentially a naive question, since I'm not familiar with all of the CC headers, but how would the following situation work (or rather how is this meant to work?):I have an "overview" page that lists some items that come from a database. This page has an input box with a button to add a new item. The way the button works is it POSTs to the same page to add an entry into some database, and then redirects to a new "details" page. The "overview" page also currently sends CCNS, so that when the user clicks back from the "details" page, they see an updated list which was re-fetched from the server. Without CCNS, going back hits BFCache and the list is not up to date.That seems correct and is a problem with BFCache in general. E.g. you hit back and your shopping cart has the wrong number of items.Is there a simple solution to this if CCNS doesn't prevent BFCache?The one-size-fits-all solutions is something likeaddEventListener("pageshow", e => {
if (e.persisted) {
document.body.innerHTML = "";
location.reload();
}
})Which is not great for users
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CADsXd2O%3DgcdgvJdsCJmP6oG6qf4k0hXM4UePqzGH1ZfQZDMEZg%40mail.gmail.com.
Thanks for your answers Fergal. Now it's my turn to apologize for the late reply..My main concern is with pages that will not revoke cookies on the client, but do so on the server.Such pages will not reveal sensitive information with a regular history navigation (as the server will no longer provide that info), but would provide it after a BFCache navigation.I agree it's very hard to know when this is happening. One experiment that might shed some light on this could be one where we store e.g. hashes such pages' HTML/JSON resources instead of BFCaching them, and then comparing those with the actual HTML/JSON downloaded in cases where the user performs a history navigation. Essentially, I think we could compare the would-be BFCache navigation with the equivalent history navigation, in order to get a sense of the risk. Ideally, we could then collect a list of origins/URLs where such discrepancies are happening, and deep dive into a sample of them, to estimate the number of cases with actual user risk (vs. cases where the page just randomly changed over the timeout's period, which are not scary)On Mon, Sep 11, 2023 at 12:32 PM Vladimir Levin <vmp...@chromium.org> wrote:On Mon, Sep 11, 2023 at 8:46 AM 'Fergal Daly' via blink-dev <blin...@chromium.org> wrote:On Fri, 8 Sept 2023 at 02:21, Vladimir Levin <vmp...@chromium.org> wrote:This is potentially a naive question, since I'm not familiar with all of the CC headers, but how would the following situation work (or rather how is this meant to work?):I have an "overview" page that lists some items that come from a database. This page has an input box with a button to add a new item. The way the button works is it POSTs to the same page to add an entry into some database, and then redirects to a new "details" page. The "overview" page also currently sends CCNS, so that when the user clicks back from the "details" page, they see an updated list which was re-fetched from the server. Without CCNS, going back hits BFCache and the list is not up to date.That seems correct and is a problem with BFCache in general. E.g. you hit back and your shopping cart has the wrong number of items.Is there a simple solution to this if CCNS doesn't prevent BFCache?The one-size-fits-all solutions is something likeaddEventListener("pageshow", e => {
if (e.persisted) {
document.body.innerHTML = "";
location.reload();
}
})Which is not great for usersIs this a pattern we want to recommend? What would be the performance implications if this pattern becomes common?
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAL5BFfXTPGWGogayj_ohBcq4kmKYwUetrmOtNH%3DzVLRzjnn%2BRg%40mail.gmail.com.
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CADsXd2MNvQL%2BCUUbYa2bfN0JYPxrd9JV%3DrY_zR8Nw3kFjGp6bQ%40mail.gmail.com.
Please also make sure to complete all of the other shipping gate reviews.
--
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 on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAL5BFfUszpq%3DS%3DOZ4k_GnopJMRcTnL_trq5iF8J-kAzeYEiqKA%40mail.gmail.com.
Are there any spec changes planned for this feature? I'm not sure if the README linked under Specification is meant to make it into WHATWG, maybe to close out https://github.com/whatwg/html/issues/7189The only spec I could find about CCNS is https://www.rfc-editor.org/rfc/rfc9111#section-5.2.1.5, so I'm not sure how to reconcile possibly contradicting language in the specs
Thanks for your answers Fergal. Now it's my turn to apologize for the late reply..My main concern is with pages that will not revoke cookies on the client, but do so on the server.Such pages will not reveal sensitive information with a regular history navigation (as the server will no longer provide that info), but would provide it after a BFCache navigation.I agree it's very hard to know when this is happening. One experiment that might shed some light on this could be one where we store e.g. hashes such pages' HTML/JSON resources instead of BFCaching them, and then comparing those with the actual HTML/JSON downloaded in cases where the user performs a history navigation. Essentially, I think we could compare the would-be BFCache navigation with the equivalent history navigation, in order to get a sense of the risk. Ideally, we could then collect a list of origins/URLs where such discrepancies are happening, and deep dive into a sample of them, to estimate the number of cases with actual user risk (vs. cases where the page just randomly changed over the timeout's period, which are not scary)On Mon, Sep 11, 2023 at 12:32 PM Vladimir Levin <vmp...@chromium.org> wrote:On Mon, Sep 11, 2023 at 8:46 AM 'Fergal Daly' via blink-dev <blin...@chromium.org> wrote:On Fri, 8 Sept 2023 at 02:21, Vladimir Levin <vmp...@chromium.org> wrote:This is potentially a naive question, since I'm not familiar with all of the CC headers, but how would the following situation work (or rather how is this meant to work?):I have an "overview" page that lists some items that come from a database. This page has an input box with a button to add a new item. The way the button works is it POSTs to the same page to add an entry into some database, and then redirects to a new "details" page. The "overview" page also currently sends CCNS, so that when the user clicks back from the "details" page, they see an updated list which was re-fetched from the server. Without CCNS, going back hits BFCache and the list is not up to date.That seems correct and is a problem with BFCache in general. E.g. you hit back and your shopping cart has the wrong number of items.Is there a simple solution to this if CCNS doesn't prevent BFCache?The one-size-fits-all solutions is something likeaddEventListener("pageshow", e => {
if (e.persisted) {
document.body.innerHTML = "";
location.reload();
}
})Which is not great for usersIs this a pattern we want to recommend? What would be the performance implications if this pattern becomes common?
On Thu, Oct 12, 2023 at 3:56 PM Vladimir Levin <vmp...@chromium.org> wrote:Are there any spec changes planned for this feature? I'm not sure if the README linked under Specification is meant to make it into WHATWG, maybe to close out https://github.com/whatwg/html/issues/7189The only spec I could find about CCNS is https://www.rfc-editor.org/rfc/rfc9111#section-5.2.1.5, so I'm not sure how to reconcile possibly contradicting language in the specsGreat questions! Fergal - can you answer that?
Safari / WebKit shipped with all pages going into the bfcache no matter what (including
cache-control: no-store
). The only push back we received was the fact that after you log out of a site, you could still go back and see a page you should no longer be able to see. We agreed that this feedback was valid and our short-term fix was to bypass the bfcache when the page usescache-control: no-store
. Sadly, many sites use this and their intention is likely not to prevent the bfcache. This is not something we like for the long term.
On Thu, 12 Oct 2023 at 23:05, Yoav Weiss <yoav...@chromium.org> wrote:On Thu, Oct 12, 2023 at 3:56 PM Vladimir Levin <vmp...@chromium.org> wrote:Are there any spec changes planned for this feature? I'm not sure if the README linked under Specification is meant to make it into WHATWG, maybe to close out https://github.com/whatwg/html/issues/7189The only spec I could find about CCNS is https://www.rfc-editor.org/rfc/rfc9111#section-5.2.1.5, so I'm not sure how to reconcile possibly contradicting language in the specsGreat questions! Fergal - can you answer that?RFC9111 is about HTTP caches. BFCache is not a HTTP cache, so RFC 9111 does not apply. Of course the reality of implementations and expectations vs spec is a problem. Some more discussion here
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAAozHLkA5eFwcvRsTAZhy728KFaBjd5W5EZpP2%3DMmC42ngMUuQ%40mail.gmail.com.
Chiming in to say that we discussed the security concerns around this proposal quite extensively internally and overall we believe that with the short timeout, the security risks are acceptable. The residual security risk is for servers that implement purely server-side logouts and is only exploitable for a very short period of time (3 minutes). In addition, other mitigations like this one further reduce the risk such that we believe it is unlikely that this will lead to new security issues.
Thanks David!It's great to see that this will be disabled in modes where we *know* the machine is shared.Fergal - could you address concerns about web developer advice? What should we tell web developers to do on their logout pages?
Thanks for getting the security people to weigh in on this
because that was really the main question for me. And it will
still be controllable by a finch flag.
LGTM1 dependent on there being a published document outlining the options for web developers (i.e. the document you are already working on).
/Daniel
+1, thank you. LGTM2 w/ same condition.
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAL5BFfXz6RHMEbN4uVKw9pcS7nNyZT-zoQAwf1iSoS6THqAcfw%40mail.gmail.com.
SAP does fully support your intentions to get more webpages making use of the Back/Forward Cache (BFCache), because it is indeed a feature, which is improving user experience a lot. Still, we do see at least two risks associated with the current plan of storing also pages served with HTTP header cache-control: no-store (CCNS) – and the planned evictions:
1. According to the proposals here and here you intent to evict webpages from the BFCache in case an HttpOnly cookie has changed. This is crucial for SAP’s web applications. We would like to ask you to ensure that this holds true for cross-origin iframes within the document as well. The webpage should be also evicted from the BFCache in case an HttpOnly cookie of a document inside a cross-origin iframe of the webpage has changed.
2. In general we do see the risk for developers not being aware of all these exemptions for the CCNS header. Yes, one could argue that theoretically the BFCache does not fall under RFC 9111, section 5.2.1.5. However in the end the BFCache is storing information including confidential data for later use and indeed prohibits subsequent HTTP requests. With this it acts like a cache and these newly planned exemptions for CCNS are some kind of counter-intuitive. Therefor we would like to ask you to get this change of behavior officially documented, if possible in an RFC standard.
Richard & Thorsten
pageshow
event will trigger before the page is rendered for the first time upon being restored from a back/forward navigation, which guarantees that your login state check will let you reset the page to a non sensitive state.To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAAozHLmtJkE1f6GRF3f5NGvYSp%3DZvgU9H2oGxRza9jpeYbr_pQ%40mail.gmail.com.
Thank you for the update!This is a good write up. One comment / question belowFrom the doc:> Note that thepageshow
event will trigger before the page is rendered for the first time upon being restored from a back/forward navigation, which guarantees that your login state check will let you reset the page to a non sensitive state.Correct me if I'm wrong, but I think the viz surface displaying the persisted contents may be embedded and shown before the page produces a new frame. So although technically it is correct that this event will fire before the page produces a rendering and a new frame, a version of the content may be shown prior to that.I'm not sure if I'm being overly pedantic here, or whether my understanding of this flow is incorrect.
On Wed, 6 Dec 2023 at 12:29, Vladimir Levin <vmp...@chromium.org> wrote:Thank you for the update!This is a good write up. One comment / question belowFrom the doc:> Note that thepageshow
event will trigger before the page is rendered for the first time upon being restored from a back/forward navigation, which guarantees that your login state check will let you reset the page to a non sensitive state.Correct me if I'm wrong, but I think the viz surface displaying the persisted contents may be embedded and shown before the page produces a new frame. So although technically it is correct that this event will fire before the page produces a rendering and a new frame, a version of the content may be shown prior to that.I'm not sure if I'm being overly pedantic here, or whether my understanding of this flow is incorrect.I don't know if that's correct. I didn't think we kept any of the pixels while in BFCache. If you are correct, that sounds like a bug. I've filed https://crbug.com/1508728. Do you know who would know the answer to this?
On Wed, 6 Dec 2023 at 13:55, Fergal Daly <fer...@google.com> wrote:On Wed, 6 Dec 2023 at 12:29, Vladimir Levin <vmp...@chromium.org> wrote:Thank you for the update!This is a good write up. One comment / question belowFrom the doc:> Note that thepageshow
event will trigger before the page is rendered for the first time upon being restored from a back/forward navigation, which guarantees that your login state check will let you reset the page to a non sensitive state.Correct me if I'm wrong, but I think the viz surface displaying the persisted contents may be embedded and shown before the page produces a new frame. So although technically it is correct that this event will fire before the page produces a rendering and a new frame, a version of the content may be shown prior to that.I'm not sure if I'm being overly pedantic here, or whether my understanding of this flow is incorrect.I don't know if that's correct. I didn't think we kept any of the pixels while in BFCache. If you are correct, that sounds like a bug. I've filed https://crbug.com/1508728. Do you know who would know the answer to this?This is weird. Here's a test page https://fergald.github.io/random/bfcache/pixels/ When it's restored from BFCache it has a pageshow handlers that- pauses for 5s- flips the colour from red->blue or blue->red.What's weird is that going fwd/backon desktop:- the old BG-Colour is shown for 5s (but the page seems to be blank apart from that)
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAAozHLmTZFOEYcEUoai7WtG3TWJVwLY0J5Hxmu4kb7codQRDYQ%40mail.gmail.com.
On Wed, Dec 6, 2023 at 1:16 AM 'Fergal Daly' via blink-dev <blin...@chromium.org> wrote:On Wed, 6 Dec 2023 at 13:55, Fergal Daly <fer...@google.com> wrote:On Wed, 6 Dec 2023 at 12:29, Vladimir Levin <vmp...@chromium.org> wrote:Thank you for the update!This is a good write up. One comment / question belowFrom the doc:> Note that thepageshow
event will trigger before the page is rendered for the first time upon being restored from a back/forward navigation, which guarantees that your login state check will let you reset the page to a non sensitive state.Correct me if I'm wrong, but I think the viz surface displaying the persisted contents may be embedded and shown before the page produces a new frame. So although technically it is correct that this event will fire before the page produces a rendering and a new frame, a version of the content may be shown prior to that.I'm not sure if I'm being overly pedantic here, or whether my understanding of this flow is incorrect.I don't know if that's correct. I didn't think we kept any of the pixels while in BFCache. If you are correct, that sounds like a bug. I've filed https://crbug.com/1508728. Do you know who would know the answer to this?This is weird. Here's a test page https://fergald.github.io/random/bfcache/pixels/ When it's restored from BFCache it has a pageshow handlers that- pauses for 5s- flips the colour from red->blue or blue->red.What's weird is that going fwd/backon desktop:- the old BG-Colour is shown for 5s (but the page seems to be blank apart from that)I see the old page being shown for 5 seconds in this case, which I think is the viz surface that can presumably expose sensitive information: https://youtu.be/Bld0EWWpQcQ I don't know if the treatment is different if we have CCNS.
You received this message because you are subscribed to a topic in the Google Groups "blink-dev" group.
To unsubscribe from this topic, visit https://groups.google.com/a/chromium.org/d/topic/blink-dev/GuRqI7zXWMY/unsubscribe.
To unsubscribe from this group and all its topics, send an email to blink-dev+...@chromium.org.
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAN_fHtm09bRqVsK9JrQiXwNDh5Fuw1GAV05ToAEbs3yZvfyLKA%40mail.gmail.com.