Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Restrict use of registerProtocolHandler to secure contexts #4017

Closed
asankah opened this issue Sep 7, 2018 · 10 comments
Closed

Restrict use of registerProtocolHandler to secure contexts #4017

asankah opened this issue Sep 7, 2018 · 10 comments
Labels
impacts documentation Used by documentation communities, such as MDN, to track changes that impact documentation normative change security/privacy There are security or privacy implications

Comments

@asankah
Copy link
Contributor

asankah commented Sep 7, 2018

This is already the case in Firefox since 60. Chrome will likely follow suit.

cc @domenic @annevk @mgiuca

@domenic domenic added normative change security/privacy There are security or privacy implications labels Sep 7, 2018
@domenic
Copy link
Member

domenic commented Sep 7, 2018

This would be great, PR/tests appreciated.

@asankah
Copy link
Contributor Author

asankah commented Sep 7, 2018

Cool. I'll follow up with PRs.

cc @mikewest

@sideshowbarker sideshowbarker added the impacts documentation Used by documentation communities, such as MDN, to track changes that impact documentation label Sep 11, 2018
@chrisdavidmills
Copy link

Already updated on the documentation: https://developer.mozilla.org/en-US/docs/Web/API/Navigator/registerProtocolHandler

@domenic
Copy link
Member

domenic commented Nov 4, 2019

Ping @asankah on a spec/tests update here.

@ericlaw1979
Copy link
Contributor

FWIW, I have a proposal for the Chromium change out for review: https://chromium-review.googlesource.com/c/chromium/src/+/1892213. Beyond adding the secure context restriction, it requires a top-level browsing context.

@asankah
Copy link
Contributor Author

asankah commented Nov 4, 2019

Yay! @ericlaw1979 Are you also doing a spec update?

@annevk
Copy link
Member

annevk commented Nov 12, 2019

I'd propose that we allow registerProtocolHandler() from "first-party" frames as well, i.e., as long as the global's origin matches the top-level origin it should be fair game. This would make it align with permission delegation (Feature Policy), though I don't think we should offer the ability to delegate as that makes little sense.

@mikewest
Copy link
Member

I'd propose that we allow registerProtocolHandler() from "first-party" frames as well

This is very much in line with the patch @ericlaw1979 put up for review. I think he was planning on sending out a PR against HTML?

@ericlaw1979
Copy link
Contributor

Yeah, sorry, I had to learn a bunch of stuff, having never contributed to HTML before.

My thinking was that I'd start with the easy one, requiring "SecureContext" to call the API (#5080)

After I learned how to do things with that, I'd then propose a second patch that reflects our agreement about the subframes question. My current Chrome PR requires that the call be from the top-level context (https://chromium-review.googlesource.com/c/chromium/src/+/1892213).

I can adjust that to allow same-origin frames, but I'll need to

  1. Learn how to express that in spec-ese
  2. Understand whether this is literally just a same-origin check or if there are other considerations (e.g. ancestor-origins-like whereby intervening cross-origin ancestor frames are disqualifying)

@annevk
Copy link
Member

annevk commented Nov 12, 2019

@ericlaw1979 it'll be a same-origin comparison with the concept that's being added in #4966 (top-level origin). And if A is nested in B is nested in top-level A both As will be same origin with that concept. (This is a little different from the equivalent situation in redirect chains (well, sometimes), but as both As have direct script access to each other being strict doesn't really help.)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
impacts documentation Used by documentation communities, such as MDN, to track changes that impact documentation normative change security/privacy There are security or privacy implications
Development

No branches or pull requests

7 participants