fix: a page with an opaque origin is refused, not treated as a site (closes #527)
check / check (push) Waiting to run
e2e / e2e-chrome (push) Waiting to run
e2e / e2e-firefox (push) Waiting to run

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:
2026-10-14 17:57:14 +00:00
parent 575f1658ae
commit 1fd1b04432
3 changed files with 40 additions and 6 deletions
+6 -3
View File
@@ -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