From 5406d76a06d3516f2fd79fae6efc5a3eaef6d512 Mon Sep 17 00:00:00 2001 From: varjolintu Date: Mon, 10 Jul 2023 11:50:44 +0300 Subject: [PATCH] Prevent retrieving credentials from background tabs --- keepassxc-browser/background/page.js | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/keepassxc-browser/background/page.js b/keepassxc-browser/background/page.js index d787818..f15c2b1 100755 --- a/keepassxc-browser/background/page.js +++ b/keepassxc-browser/background/page.js @@ -196,17 +196,25 @@ page.createTabEntry = function(tabId) { // Page reload or tab switch clears the cache. // If the retrieval is forced (from Credential Banner), get new credentials normally. page.retrieveCredentials = async function(tab, args = []) { + if (!tab?.active) { + return []; + } + const [ url, submitUrl, force ] = args; if (page.tabs[tab.id]?.credentials.length > 0 && !force) { return page.tabs[tab.id].credentials; } - // Ignore duplicate requests - if (page.currentRequest.url === url && page.currentRequest.submitUrl === submitUrl && !force) { + // Ignore duplicate requests from the same tab + if (page.currentRequest.url === url + && page.currentRequest.submitUrl === submitUrl + && page.currentRequest.tabId === tab.id + && !force) { return []; } else { page.currentRequest.url = url; page.currentRequest.submitUrl = submitUrl; + page.currentRequest.tabId = tab.id; } const credentials = await keepass.retrieveCredentials(tab, args);