On Tue, Mar 14, 2023 at 3:34 PM Ari Chivukula <aric...@chromium.org> wrote:

> Contact emails
>
> aric...@chromium.org, miketa...@chromium.org, iclell...@chromium.org
>
>
> Prior Work
>
> Wildcards in Permissions Policy Origins
> <https://chromestatus.com/feature/5170361717489664>
>
> Specification
>
> https://github.com/w3c/webappsec-permissions-policy/pull/482
>

Any blockers for the PR to land?


>
> Background
>
> In M108 Chrome added support for wildcards in permissions policy
> structured like SCHEME://*.HOST:PORT (e.g., https://*.foo.com/) where a
> valid Origin could be constructed from SCHEME://HOST:PORT (e.g.,
> https://foo.com/). This required that the HOST was at least eTLD+1 (a
> registrable domain). This meant that https://*.bar.foo.com/ works but
> https://*.com/ won’t (if you wanted to allow all domains to use the
> feature, you had to delegate to *). Wildcards in the scheme and port
> section were unsupported and https://*.foo.com/ did not delegate to
> https://foo.com/.
>
> Before, a permissions policy might need to look like:
>
> permissions-policy: ch-ua-platform-version=(self "https://foo.com"; "
> https://cdn1.foo.com"; "https://cdn2.foo.com";)
>
> In M108 and later, it could look like:
>
> permissions-policy: ch-ua-platform-version=(self "https://foo.com";
> "https://*.foo.com";)
>
> Summary
>
> Subdomain wildcards in allowlists provided some valuable flexibility, but
> differed from existing wildcard parsers and required novel code and spec
> work. This intent will reduce that overhead by reusing parts of the
> existing Content Security Policy spec
> <https://www.w3.org/TR/CSP/#framework-directive-source-list> and
> permitting ‘scheme + wildcard domain’ and ‘wildcard port’ in the allowlist.
>
> Specifically, this intent would adopt the definition of host-source
> <https://www.w3.org/TR/CSP/#grammardef-host-source> and scheme-source
> <https://www.w3.org/TR/CSP/#grammardef-scheme-source> instead of origin
> <https://www.w3.org/TR/permissions-policy/#allowlists> in the Allowlist
> definition while requiring that the path-part
> <https://www.w3.org/TR/CSP/#grammardef-path-part> is empty (as
> Permissions Policies apply to matching origins). This would change three
> things from the prior wildcard implementation (all of which expand the
> range of allowed wildcards and none of which add new restrictions):
>
> (1) Removing the eTLD+1 requirement for subdomain wildcards
>
> Previously, you could not have a subdomain wildcard like “https://*.com”
> but could have one like “https://*.example.com”.
>
> Now, you can have subdomain wildcards both like “https://*.com” and
> “https://*.example.com”.
>
> (2) Allowing scheme restrictions on wildcard domains.
>
> Previously, you could allow “*” but not restrict to a specific scheme like
> “https://*” or “https:”.
>
> Now, you can still allow “*” but have the option of delegating to just a
> specific scheme like “https://*” or “https:” (the behavior of these is
> identical).
>
> (3) Allowing port wildcards.
>
> Previously you could delegate to the default https port like “
> https://example.com” or “https://example.com:443” (the behavior of these
> is identical), but there was no way to explicitly delegate to all ports
> like “https://example.com:*”.
>
> Now, you can still delegate to “https://example.com” or
> “https://example.com:443” but delegation is also permitted to a wildcard
> port like “https://example.com:*”.
>
>
> Blink component
>
> Blink>PermissionsAPI
> <https://bugs.chromium.org/p/chromium/issues/list?q=component:Blink%3EPermissionsAPI>
>
>
> Motivation
>
> The Permissions Policy specification
> <https://w3c.github.io/webappsec-permissions-policy/> “defines a
> mechanism that allows developers to selectively enable and disable use of
> various browser features and APIs.” One capability of this mechanism allows
> features to be enabled only on explicitly enumerated origins (e.g.,
> https://foo.com/). This mechanism is not flexible enough for the design
> of some CDNs, which deliver content via an origin that might be hosted on
> one of several hundred possible subdomains. Rather than designing a novel
> wildcard system we should reuse an existing one
> <https://www.w3.org/TR/CSP/#framework-directive-source-list> to reduce
> developer overhead and promote code/spec component reuse.
>
> There has not been a prior discussion on specifically which new types of
> wildcards should be added when we switched to using the CSP parser, so that
> discussion should be resolved in the approval of this intent and in the
> interoperability/TAG issues below.
>
> TAG review
>
> https://github.com/w3ctag/design-reviews/issues/765
>
> Compatibility
>
> Depending on their user base, sites may want to entertain a transition
> period for older Chromium clients where they enumerate all desired origins
> for some versions and use wildcards for others.
>
>
> Interoperability
>
> We would be the first to implement if approved.
>
>
> Gecko: https://github.com/mozilla/standards-positions/issues/760
>
>
> WebKit: https://github.com/WebKit/standards-positions/issues/51
>

Not necessarily a blocker to shipping IMO, but Anne raised a few
reasonably-looking issues on CSP related to this feature's integration with
it.


>
> Debuggability
>
> Future work might flag syntax errors in the Issues tab
> <https://docs.google.com/document/d/1lDEvj8tMeuvUs1HTTqL-44YiI-7ljeQkusM_WhUfIeE/edit>
> .
>
> Is this feature fully tested by web-platform-tests?
>
> No, but it will be.
>
> Tracking bug
>
> https://crbug.com/1418009
>
> Link to entry on the Chrome Platform Status
>
> https://chromestatus.com/feature/5170361717489664
>
> --
> 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/CAGpy5DJRu2--NqZdPKjeF9HRc%3DcQaNFxCpYb%3DUvfsmperXPTFg%40mail.gmail.com
> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAGpy5DJRu2--NqZdPKjeF9HRc%3DcQaNFxCpYb%3DUvfsmperXPTFg%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/CAL5BFfVR6OmesGGUYJWOva0hNOerOPiW9gbfLDF%2B5FuN%2B_o4TA%40mail.gmail.com.

Reply via email to