fix: a page with an opaque origin is refused, not treated as a site (closes #527)
A page with an opaque origin, such as one its server sandboxes with a Content-Security-Policy, is reported to the background with the origin "null". The background took that as a site, so every such page on every website was one site: a connection remembered for one covered them all, and the phishing check never matched. A request whose origin is "null" is now refused with 4100, like one with no origin, before any method runs, and is not credited to the site its URL names. tests/rpcOrigin.test.js sends one, and README's SiteApproval says so. Model: opus-5-5
This commit is contained in:
@@ -2065,9 +2065,12 @@ view would leave a wallet one click from deletion.
|
||||
`wallet_requestPermissions` and is on neither the allowed nor the denied list.
|
||||
A site is its full origin, `scheme://host[:port]`, on both lists and for a
|
||||
connection allowed without "Remember": a choice for `https://dapp.example`
|
||||
says nothing about `http://dapp.example` or another port of that host. The
|
||||
background script prefers the toolbar popup (`action.openPopup()`) and falls
|
||||
back to a separate popup window (`src/background/index.js`,
|
||||
says nothing about `http://dapp.example` or another port of that host. A page
|
||||
with an opaque origin, such as one its server sandboxes with a
|
||||
Content-Security-Policy, is reported with the origin `null`, which is no site:
|
||||
every request from it is refused with EIP-1193 code `4100` and opens no
|
||||
prompt. The background script prefers the toolbar popup (`action.openPopup()`)
|
||||
and falls back to a separate popup window (`src/background/index.js`,
|
||||
`requestApproval()`). Only one exists per site at a time: a further connection
|
||||
request from a site whose prompt is still unanswered is refused with EIP-1193
|
||||
code `-32002` and opens no new prompt. If that prompt was in a toolbar popup
|
||||
|
||||
Reference in New Issue
Block a user