mirror of
https://github.com/bitwarden/browser
synced 2025-12-06 00:13:28 +00:00
Arch/pm 27820 (#17241)
* add storage port validation * remove unused method * Prefer property presence over truthyness (cherry picked from commitcbf380e023) (cherry picked from commit33149f79cb)
This commit is contained in:
@@ -32,6 +32,36 @@ export class BrowserApi {
|
|||||||
return BrowserApi.manifestVersion === expectedVersion;
|
return BrowserApi.manifestVersion === expectedVersion;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static senderIsInternal(sender: chrome.runtime.MessageSender | null): boolean {
|
||||||
|
if (!sender?.url) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
const extensionUrl =
|
||||||
|
(typeof chrome !== "undefined" && chrome.runtime?.getURL("")) ||
|
||||||
|
(typeof browser !== "undefined" && browser.runtime?.getURL("")) ||
|
||||||
|
"";
|
||||||
|
|
||||||
|
if (!extensionUrl) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!sender.url.startsWith(extensionUrl)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// these are all properties on externally initiated messages, not internal ones
|
||||||
|
if (
|
||||||
|
"tab" in sender ||
|
||||||
|
"documentId" in sender ||
|
||||||
|
"documentLifecycle" in sender ||
|
||||||
|
"frameId" in sender
|
||||||
|
) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets all open browser windows, including their tabs.
|
* Gets all open browser windows, including their tabs.
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -43,6 +43,9 @@ export class LocalBackedSessionStorageService
|
|||||||
if (port.name !== portName(chrome.storage.session)) {
|
if (port.name !== portName(chrome.storage.session)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (!BrowserApi.senderIsInternal(port.sender)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
this.ports.add(port);
|
this.ports.add(port);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user