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 below
>>
>> From the doc:
>> > Note that the 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.
>>
>> 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/back

on desktop:
- the old BG-Colour is shown for 5s (but the page seems to be blank apart
from that)
- then the content appears and the colour changes

on mobile:
- the current page is shown for 5s
- then the content appears and the colour changes

I'm not sure which behaviour I would describe as correct. I guess it's best
to keep showing the old content rather than flashing an empty page if
pageshow is taking a long time.

Either way, in both cases we do not see the old content but I think we
should clean this up and also put in something to guard against a change
where the old content is shown,

F



>
> The same issue comes up in discussions of a back-preview (e.g. on mobile
> when gesturing the go back, we could show a snapshot of the page) and the
> intention there is to never do this with CCNS pages,
>
> F
>
>
>
>>
>> Thanks again for the write up
>> Vlad
>>
>> On Tue, Dec 5, 2023, 19:37 'Fergal Daly' via blink-dev <
>> blink-dev@chromium.org> wrote:
>>
>>> We now have a published doc
>>> <https://web.dev/articles/sign-out-best-practices> that covers best
>>> practices for BFCache/CCNS (and much more) during logout. Please let us
>>> know if you have any feedback on it.
>>>
>>> We will proceed with cautiously rolling out this change. Thanks everyone,
>>>
>>> F
>>>
>>> On Thu, 16 Nov 2023 at 13:37, Fergal Daly <fer...@google.com> wrote:
>>>
>>>> Thanks everyone. Yes we will keep this thread up to date before
>>>> releasing this (we'll go to canary/dev very soon so that we start getting
>>>> stability and impact signals),
>>>>
>>>> F
>>>>
>>>> On Thu, 16 Nov 2023 at 05:30, Vladimir Levin <vmp...@chromium.org>
>>>> wrote:
>>>>
>>>>> If possible, can you share this document on this thread when it is
>>>>> available?
>>>>>
>>>>> On Wed, Nov 15, 2023 at 12:52 PM Yoav Weiss <yoavwe...@chromium.org>
>>>>> wrote:
>>>>>
>>>>>> LGTM3 with the same condition.
>>>>>>
>>>>>> On Wed, Nov 15, 2023 at 6:44 PM Mike Taylor <miketa...@chromium.org>
>>>>>> wrote:
>>>>>>
>>>>>>> +1, thank you. LGTM2 w/ same condition.
>>>>>>> On 11/15/23 12:39 PM, Daniel Bratell wrote:
>>>>>>>
>>>>>>> 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
>>>>>>> On 2023-11-10 09:45, Fergal Daly wrote:
>>>>>>>
>>>>>>> On Fri, 10 Nov 2023 at 17:29, Yoav Weiss <yoavwe...@chromium.org>
>>>>>>> wrote:
>>>>>>>
>>>>>>>> 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?
>>>>>>>>
>>>>>>>
>>>>>>> Yes, we are in discussion with dev-rel about this. They were already
>>>>>>> looking at producing advice for auth best practices. We will ensure that
>>>>>>> this is covered in that,
>>>>>>>
>>>>>>> F
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> On Fri, Nov 10, 2023 at 8:37 AM David Dworken <ddwor...@google.com>
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>>> 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
>>>>>>>>> <https://bugs.chromium.org/p/chromium/issues/detail?id=1468438> 
>>>>>>>>> further
>>>>>>>>> reduce the risk such that we believe it is unlikely that this will 
>>>>>>>>> lead to
>>>>>>>>> new security issues.
>>>>>>>>>
>>>>>>>>> On Friday, October 13, 2023 at 7:14:46 AM UTC-7
>>>>>>>>> vmp...@chromium.org wrote:
>>>>>>>>>
>>>>>>>>> On Fri, Oct 13, 2023 at 12:00 AM 'Fergal Daly' via blink-dev <
>>>>>>>>> blin...@chromium.org> wrote:
>>>>>>>>>
>>>>>>>>> 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/7189
>>>>>>>>>
>>>>>>>>> The 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
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Great 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
>>>>>>>>> <https://github.com/fergald/explainer-bfcache-ccns/blob/main/README.md#current-interactions-between-bfcache-and-ccns>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> I'm not sure I agree with this, or the reasoning in the link.
>>>>>>>>> First of all, this intent thread is about ignoring CCNS in _some 
>>>>>>>>> cases_. In
>>>>>>>>> other cases, CCNS is respected, so it seems like BFCache is de facto
>>>>>>>>> subject to RFC 9111.
>>>>>>>>>
>>>>>>>>> This is, I guess, a bit philosophical but the spec says:
>>>>>>>>> the cache MUST NOT intentionally store the information in
>>>>>>>>> non-volatile storage and MUST make a best-effort attempt to remove the
>>>>>>>>> information from volatile storage as promptly as possible after 
>>>>>>>>> forwarding
>>>>>>>>> it.
>>>>>>>>>
>>>>>>>>> Note that the spec here does not make any exceptions for things
>>>>>>>>> like cookie state not changing or anything else. The document when 
>>>>>>>>> frozen
>>>>>>>>> is indeed a volatile storage of the server response, processed and 
>>>>>>>>> stored
>>>>>>>>> in some particular format (ie the DOM tree). I admit it's a bit weird 
>>>>>>>>> to
>>>>>>>>> think about it this way, since the live document is technically also 
>>>>>>>>> this
>>>>>>>>> cache. Whereas I agree that BFCache is not strictly an HTTP Cache, I 
>>>>>>>>> don't
>>>>>>>>> quite follow why CCNS should not apply to the BFCache in some cases.
>>>>>>>>>
>>>>>>>>> To me, BFCache seems like "a better http cache" which already has
>>>>>>>>> rendered results, not a completely separate cache that is not subject 
>>>>>>>>> to
>>>>>>>>> CCNS.
>>>>>>>>>
>>>>>>>>> But I'm late to the game, and I see that the topic of "BFCache is
>>>>>>>>> not HTTP Cache" has already been discussed a lot. I'm not convinced by
>>>>>>>>> existing arguments, but I also don't think I'll be able to convince 
>>>>>>>>> anyone
>>>>>>>>> of my position.
>>>>>>>>>
>>>>>>>>> My problem with the consensus in
>>>>>>>>> https://github.com/whatwg/html/issues/5744 is the following.
>>>>>>>>> People seem to agree that we don't want a *new* api that specifically
>>>>>>>>> prevents pages from entering BFCache. I don't believe it's 
>>>>>>>>> appropriate to
>>>>>>>>> draw a conclusion that there is consensus that BFCache should not be
>>>>>>>>> subject to any *existing* APIs that prevent pages from entering it. 
>>>>>>>>> This
>>>>>>>>> might be true independently, but I don't think one follows from the 
>>>>>>>>> other.
>>>>>>>>> To quote this comment
>>>>>>>>> <https://github.com/whatwg/html/issues/5744#issuecomment-811958634>
>>>>>>>>> :
>>>>>>>>> "... And what is the problem with the bank case? I'd expect bank
>>>>>>>>> may want to ensure its page doesn't enter bfcache, or any other 
>>>>>>>>> cache, by
>>>>>>>>> using no-store (and other) header(s) or something ..."
>>>>>>>>>
>>>>>>>>> That comment sounds to me like "the status quo is good enough,
>>>>>>>>> because there are already ways of preventing any cache, including 
>>>>>>>>> bfcache."
>>>>>>>>> If we were to claim consensus on doing this work, I'd personally want 
>>>>>>>>> to
>>>>>>>>> see a more explicit "let's make it so pages still enter BFCache 
>>>>>>>>> despite
>>>>>>>>> CCNS in these cases." The comment from cdumez you quoted is good, but 
>>>>>>>>> maybe
>>>>>>>>> following-up there is worthwhile.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> I concede though that I'm by no means an expert here, so I don't
>>>>>>>>> want to block moving this forward any longer. I just want to say that 
>>>>>>>>> it's
>>>>>>>>> typically easy to be fast if you show stale data, and shifting the 
>>>>>>>>> blame to
>>>>>>>>> the site for using CCNS instead of refreshing needed content in script
>>>>>>>>> doesn't seem appropriate. I personally would not want to be the judge 
>>>>>>>>> of
>>>>>>>>> whether CCNS use is appropriate or not since I don't know what
>>>>>>>>> "appropriate" is in this case.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> BFCache and cases where it can/can't be used are specced in the
>>>>>>>>> HTML standard. We have had very little engagement from other vendors 
>>>>>>>>> on
>>>>>>>>> this particular idea but Safari tried to cache all CCNS pages in the 
>>>>>>>>> past.
>>>>>>>>> I am hoping that if we demonstrate a way to cache some of them 
>>>>>>>>> safely, they
>>>>>>>>> would be on board. Also any browser is free to be *more* conservative 
>>>>>>>>> than
>>>>>>>>> the spec while still staying in-spec as BFCaching at all is always 
>>>>>>>>> optional.
>>>>>>>>>
>>>>>>>>> Here
>>>>>>>>> <https://github.com/whatwg/html/issues/5744#issuecomment-661997090>
>>>>>>>>> is cdumez of Safari
>>>>>>>>>
>>>>>>>>> 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 uses cache-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.
>>>>>>>>>
>>>>>>>>> F
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Also, Vlad previously asked about the recommended pattern for
>>>>>>>>> folks to handle credential revocation with BFCache and his concerns 
>>>>>>>>> with
>>>>>>>>> the snippet suggested upthread. It'd be great to address that.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Thanks!
>>>>>>>>> vmpstr
>>>>>>>>>
>>>>>>>>> On Thu, Oct 12, 2023 at 2:32 AM Yoav Weiss <yoav...@chromium.org>
>>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>> I just discussed this with Fergal offline:
>>>>>>>>>
>>>>>>>>>    - The risky scenario is one where revocation of sensitive info
>>>>>>>>>    (logout, access revoked) happens on the server-side only without a
>>>>>>>>>    client-side update.
>>>>>>>>>    - In such a scenario on a shared computer, someone could
>>>>>>>>>    back-button their way into someone else's sensitive info.
>>>>>>>>>    - It might be interesting to talk to security folks (and maybe
>>>>>>>>>    Project Zero folks) to see if this is not happening already with 
>>>>>>>>> content
>>>>>>>>>    that's not CCNS decorated.
>>>>>>>>>    - It would be good to run a survey of
>>>>>>>>>    potentially-sensitive services and try to get a signal from them 
>>>>>>>>> on how
>>>>>>>>>    many of them are properly doing revocation on the client side.
>>>>>>>>>       - I'd love ideas on how we can scale such a survey beyond
>>>>>>>>>       manual inspection of a few known services.
>>>>>>>>>    - It could be interesting to try and ship a version of this
>>>>>>>>>    with a shorter timeout, to minimize the risk of users leaving the 
>>>>>>>>> machine
>>>>>>>>>    unattended.
>>>>>>>>>       - If we go that route, it'd be good to think through how
>>>>>>>>>       we'd be able to increase that timeout over time, after gaining 
>>>>>>>>> more
>>>>>>>>>       confidence that the risky scenario isn't happening in the wild.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Thu, Oct 5, 2023 at 2:36 AM Jason Robbins <jrob...@google.com>
>>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>> At this morning's API Owners meeting, they asked me to add all
>>>>>>>>> review gate types to all of the "web developer facing code change" 
>>>>>>>>> features
>>>>>>>>> that are currently under review, including this one.  So, I have added
>>>>>>>>> Privacy, Security, Enterprise, Debuggability, and Testing gates to 
>>>>>>>>> your
>>>>>>>>> feature entry.
>>>>>>>>>
>>>>>>>>> Please click the gate chips in the "Prepare to ship" stage on your
>>>>>>>>> feature detail page.  For each one, answer survey questions and 
>>>>>>>>> request
>>>>>>>>> that of the cross-functional review.  You can request them all in
>>>>>>>>> parallel.  In cases where you already have the go/launch
>>>>>>>>> <https://goto.google.com/launch> bit approved, you can note that
>>>>>>>>> in a comment on that gate for a potentially faster review.
>>>>>>>>>
>>>>>>>>> Thanks,
>>>>>>>>> jason!
>>>>>>>>> On Monday, October 2, 2023 at 9:09:18 AM UTC-7 Jason Robbins wrote:
>>>>>>>>>
>>>>>>>>> On Friday, September 29, 2023 at 1:01:54 PM UTC-7 Chris Harrelson
>>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>> Please also make sure to complete all of the other shipping gate
>>>>>>>>> reviews
>>>>>>>>> <https://groups.google.com/a/chromium.org/g/blink-dev/c/bqvB1oap0Yc/m/YlO8DEHgAQAJ>
>>>>>>>>> .
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> I think a bug in ChromeStatus may have caused some confusion on
>>>>>>>>> this feature entry.  The feature entry has type "Web developer facing 
>>>>>>>>> code
>>>>>>>>> change", so its bilnk-dev thread should have had subject line prefix
>>>>>>>>> "Web-facing change PSA" rather than "Intent to ship".  And, according 
>>>>>>>>> to
>>>>>>>>> the launching-features doc
>>>>>>>>> <https://www.chromium.org/blink/launching-features/#psa-prepare-to-ship>,
>>>>>>>>> it does not require any approvals, which is why there are no other 
>>>>>>>>> gates
>>>>>>>>> offered in the ChromeStatus UI.  A fix for that subject-line prefix 
>>>>>>>>> bug
>>>>>>>>> should go live today.
>>>>>>>>>
>>>>>>>>> Of course, the point of a PSA is to allow concerns to be raised
>>>>>>>>> and I see that this is a very active thread.  So, all that should be 
>>>>>>>>> worked
>>>>>>>>> through.  Its a mater of the the API Owners prerogative to request any
>>>>>>>>> other reviews that they think are appropriate, but it is not 
>>>>>>>>> automatically
>>>>>>>>> required by the process for this feature type.  Also, I see that the 
>>>>>>>>> launch
>>>>>>>>> entry <https://launch.corp.google.com/launch/4251651> had some
>>>>>>>>> approvals.
>>>>>>>>>
>>>>>>>>> Thanks,
>>>>>>>>> jason!
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> 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
>>>>>>>>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAL5BFfUszpq%3DS%3DOZ4k_GnopJMRcTnL_trq5iF8J-kAzeYEiqKA%40mail.gmail.com?utm_medium=email&utm_source=footer>
>>>>>>>>> .
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> 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/CAAozHLkA5eFwcvRsTAZhy728KFaBjd5W5EZpP2%3DMmC42ngMUuQ%40mail.gmail.com
>>>>>>>>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAAozHLkA5eFwcvRsTAZhy728KFaBjd5W5EZpP2%3DMmC42ngMUuQ%40mail.gmail.com?utm_medium=email&utm_source=footer>
>>>>>>>>> .
>>>>>>>>>
>>>>>>>>> --
>>>>>> 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+unsubscr...@chromium.org.
>>>>>> To view this discussion on the web visit
>>>>>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAL5BFfXz6RHMEbN4uVKw9pcS7nNyZT-zoQAwf1iSoS6THqAcfw%40mail.gmail.com
>>>>>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAL5BFfXz6RHMEbN4uVKw9pcS7nNyZT-zoQAwf1iSoS6THqAcfw%40mail.gmail.com?utm_medium=email&utm_source=footer>
>>>>>> .
>>>>>>
>>>>> --
>>> 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+unsubscr...@chromium.org.
>>> 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
>>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAAozHLmtJkE1f6GRF3f5NGvYSp%3DZvgU9H2oGxRza9jpeYbr_pQ%40mail.gmail.com?utm_medium=email&utm_source=footer>
>>> .
>>>
>>

-- 
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+unsubscr...@chromium.org.
To view this discussion on the web visit 
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAAozHLmTZFOEYcEUoai7WtG3TWJVwLY0J5Hxmu4kb7codQRDYQ%40mail.gmail.com.

Reply via email to