On 8/20/25 10:42 a.m., Yoav Weiss (@Shopify) wrote:



On Wed, Aug 20, 2025 at 4:35 PM Mike Taylor <miketa...@chromium.org> wrote:

    On 8/11/25 5:27 a.m., Yoav Weiss (@Shopify) wrote:

    Reviving this thread, as while talking to folks about deploying
    this I realized we should name `__HostHttp-` to be `__Host-Http-`.
    That makes sure that deploying __Host-Http- prefixed cookies
    maintains host semantics in non-supporting browsers and makes for
    a progressive enhancement. (rather than requiring complex server
    side logic to determine the cookie name based on browser and version)

    I discussed the rename with WebKit, Mozilla and Chrome engineers
    on the #cookies matrix channel and everyone seemed on board with it.
    I also filed spec
    <https://github.com/httpwg/http-extensions/pull/3153> PRs
    <https://github.com/whatwg/cookiestore/pull/286> as well as WPT
    <https://github.com/web-platform-tests/wpt/pull/54226>.

    Since this never hit stable (it landed in 140, which is still in
    Beta), I suggest to:
    * Turn off the feature flag
    
<https://source.chromium.org/chromium/chromium/src/+/main:net/base/features.h;l=184?q=hosthttp%20f:feature&ss=chromium%2Fchromium%2Fsrc>
 in
    140 (either in code with back-merges or on the server-side if
    Google folks are interested in helping with that).
    * Rename the prefix in 141 and enable the flag there.

    That would mean that the __Http- prefix would ship in 140 and
    __HostHttp- ships in 141, but I think that's perfectly fine.

    What do y'all think?

    Makes sense to me!


    P.S. Another thing that seems important for ease of deployment is
    that supporting browsers would apply the prefix rules to cookies
    already in their stores when they are upgraded.
    I'm planning to change Chromium's implementation to support that,
    but that doesn't seem extremely web-exposed. Let me know if you
    think otherwise.
    Will you make sure the RFC is updated to reflect this change?


There's an ongoing discussion at https://github.com/httpwg/http-extensions/pull/3156
Perfect, thanks.


    On Mon, Jun 30, 2025 at 4:36 PM Yoav Weiss (@Shopify)
    <yoavwe...@chromium.org> wrote:

        Just to close the loop, the PR has landed, and the feature is
        now enabled by default
        <https://chromium-review.googlesource.com/c/chromium/src/+/6683341>.
        Thanks all!!

        On Wed, Jun 25, 2025 at 8:59 PM PhistucK <phist...@gmail.com>
        wrote:

            I asked Copilot there and it went over the results itself
            and found nothing, too. Handy (even if not 100% reliable). :)


            ☆*PhistucK*


            On Wed, Jun 25, 2025 at 7:57 PM Yoav Weiss (@Shopify)
            <yoavwe...@chromium.org> wrote:



                On Wed, Jun 25, 2025 at 7:37 PM PhistucK
                <phist...@gmail.com> wrote:

                    Have you tried searching GitHub with a regular
                    expression? Seems not to ignore anything. :)
                    https://github.com/search?q=%2F__Http-%2F&type=code
                    <https://github.com/search?q=%2F__Http-%2F&type=code>


                Thanks!! Going over the results, it seems like
                there's nothing there related to cookies (other than
                the WPT that testing this very feature).



                    ☆*PhistucK*


                    On Wed, Jun 25, 2025 at 6:00 AM Yoav Weiss
                    (@Shopify) <yoavwe...@chromium.org> wrote:



                        On Wed, Jun 25, 2025 at 4:18 AM Vladimir
                        Levin <vmp...@chromium.org> wrote:



                            On Thursday, June 19, 2025 at 9:48:37 AM
                            UTC-4 Yoav Weiss wrote:

                                Contact emailsyoavwe...@chromium.org

                                Explainer
                                This will add the cookie name prefix
                                `__Http-`.
                                Cookies that would start with that
                                prefix would only be able to be set
                                using the `Set-Cookie` HTTP header
                                and will have to have an `httpOnly`
                                attribute.

                                Adding that prefix to the cookie name
                                will give site operators the
                                guarantee that any such cookie they
                                see was set by their server, and not
                                be a malicious/compromised script.

                                There are still ongoing discussions
                                
<https://github.com/httpwg/http-extensions/issues/3111#issuecomment-2986560222>
                                about the exact spelling of a
                                combination of this prefix with the
                                `__Host-` prefix. I'd like this
                                intent to cover both, but I'm not
                                planning to ship the `__HostHttp`
                                variant until the dust settles on the
                                desired spelling.

                                
Specificationhttps://github.com/httpwg/http-extensions/pull/3110
                                
<https://github.com/httpwg/http-extensions/pull/3110>

                                Summary

                                There are cases where it's important
                                to distinguish on the server side
                                between cookies that were set by the
                                server and ones that were set by the
                                client. One such case is cookies that
                                are normally always set by the
                                server, unless some unexpected code
                                (an XSS exploit, a malicious
                                extension, a commit from a confused
                                developer, etc.) happens to set them
                                on the client. This proposal adds a
                                signal that would enable servers to
                                make such a distinction. More
                                specifically, it defines the __Http
                                and __HostHttp prefixes, that make
                                sure that a cookie is not set on the
                                client side using script.



                            What is the behavior if one attempts to
                            set an `__Http`-prefixed cookie from
                            script with this feature? Does it
                            silently fail, or is there an error that
                            is thrown?


                        Similar to existing prefixes
                        
<https://github.com/web-platform-tests/wpt/blob/master/cookies/resources/cookie-helper.sub.js#L76>,
                        when setting a cookie using
                        `document.cookie`, the only way to know it
                        failed is observing (on the server) it is not
                        present in relevant requests.
                        Setting such a cookie through the CookieStore
                        API results in a Promise rejection
                        
<https://github.com/web-platform-tests/wpt/blob/master/cookie-store/cookieStore_special_names.https.any.js#L39>.


                                Blink
                                componentInternals>Network>Cookies
                                
<https://issues.chromium.org/issues?q=customfield1222907:%22Internals%3ENetwork%3ECookies%22>

                                TAG reviewNone, as the TAG doesn't
                                typically review HTTP features.

                                TAG review statusNot applicable

                                Risks


                                Interoperability and Compatibility

                                No particular compat issues, as we
                                don't expect this prefix to already
                                exist in the wild.

                                In terms of interop, Mozilla and
                                Apple folks are heavily involved in
                                the discussions and haven't raised
                                any concerns.


                            I agree that the chance of there being
                            __Http named cookies is very low, but
                            I've been wrong about things like this
                            before :) Do you have any metrics/code
                            searches/etc to validate that this is
                            safe from compat perspective?


                        I don't have any metrics, and GH search seems
                        to ignore the _ and - parts when searching
                        for `__Http-`..
                        I agree there's a non-zero change that
                        someone added such a prefix to a cookie
                        (without it being httpOnly), but I think
                        having a Finch flag to be able to turn the
                        feature off in case that turns out to be the
                        case is sufficient.



                                /Gecko/: No signal
                                
(https://github.com/mozilla/standards-positions/issues/1256
                                
<https://github.com/mozilla/standards-positions/issues/1256>)

                                /WebKit/: No signal
                                
(https://github.com/WebKit/standards-positions/issues/518
                                
<https://github.com/WebKit/standards-positions/issues/518>)

                                /Web developers/: Positive
                                
(https://lists.w3.org/Archives/Public/ietf-http-wg/2025JanMar/0146.html
                                
<https://lists.w3.org/Archives/Public/ietf-http-wg/2025JanMar/0146.html>)

                                /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

                                None



                                Will this feature be supported on all
                                six Blink platforms (Windows, Mac,
                                Linux, ChromeOS, Android, and Android
                                WebView)?Yes

                                Is this feature fully tested by
                                web-platform-tests
                                
<https://chromium.googlesource.com/chromium/src/+/main/docs/testing/web_platform_tests.md>?Yes
                                
https://chromium-review.googlesource.com/c/chromium/src/+/6638647/15/third_party/blink/web_tests/external/wpt/cookies/prefix/__Http.https.html
                                
<https://chromium-review.googlesource.com/c/chromium/src/+/6638647/15/third_party/blink/web_tests/external/wpt/cookies/prefix/__Http.https.html>
                                
https://chromium-review.googlesource.com/c/chromium/src/+/6650996/2/third_party/blink/web_tests/external/wpt/cookies/prefix/__HostHttp.https.html
                                
<https://chromium-review.googlesource.com/c/chromium/src/+/6650996/2/third_party/blink/web_tests/external/wpt/cookies/prefix/__HostHttp.https.html>

                                Flag name on about://flagsNone

                                Finch feature namePrefixCookieHttp,
                                PrefixCookieHostHttp

                                Rollout planWill ship enabled for all
                                users

                                Requires code in //chrome?False

                                Tracking
                                bughttps://issues.chromium.org/issues/426096760
                                <https://issues.chromium.org/issues/426096760>

                                Estimated milestonesShipping on
                                desktop140Shipping on
                                Android140Shipping on WebView140

                                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).

                                None

                                Link to entry on the Chrome Platform
                                
Statushttps://chromestatus.com/feature/5170139586363392?gate=5174068239925248
                                
<https://chromestatus.com/feature/5170139586363392?gate=5174068239925248>

                                This intent message was generated by
                                Chrome Platform Status
                                <https://chromestatus.com/>.

-- 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 visit
                        
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAOmohS%2BRtDnZ9x5izwv8_4xUBOxZrzBd2L8Eh_Cn58dPvd9Ayw%40mail.gmail.com
                        
<https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAOmohS%2BRtDnZ9x5izwv8_4xUBOxZrzBd2L8Eh_Cn58dPvd9Ayw%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 visit
    
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAOmohSKsGyqchsfbHrXBLPorj--FaTvtJ4wROsNK2dwgkrUaYg%40mail.gmail.com
    
<https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAOmohSKsGyqchsfbHrXBLPorj--FaTvtJ4wROsNK2dwgkrUaYg%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 visit 
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/414c6625-dca5-4cab-b1a6-bf9bf0ba5f95%40chromium.org.

Reply via email to