Initial commit
This commit is contained in:
commit
b0638b1d2a
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
.log
|
BIN
border-48.png
Normal file
BIN
border-48.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 225 B |
31
manifest.json
Normal file
31
manifest.json
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
{
|
||||||
|
"manifest_version": 2,
|
||||||
|
"name": "Problematyczne requesty",
|
||||||
|
"version": "1.0",
|
||||||
|
|
||||||
|
"description": "Adds a red border to all webpages matching mozilla.org.",
|
||||||
|
|
||||||
|
"icons": {
|
||||||
|
"48": "icons/border-48.png"
|
||||||
|
},
|
||||||
|
|
||||||
|
"background": {
|
||||||
|
"scripts": ["problematic.js"]
|
||||||
|
},
|
||||||
|
|
||||||
|
"browser_action": {
|
||||||
|
"default_icon": "border-48.png",
|
||||||
|
"default_title": "Pokaż problematyczne requesty",
|
||||||
|
"default_popup": "popup/choose_beast.html"
|
||||||
|
},
|
||||||
|
"icons": {
|
||||||
|
"48": "icons/border-48.png"
|
||||||
|
},
|
||||||
|
"permissions": [
|
||||||
|
"proxy",
|
||||||
|
"storage",
|
||||||
|
"<all_urls>",
|
||||||
|
"webRequest",
|
||||||
|
"webRequestBlocking"
|
||||||
|
]
|
||||||
|
}
|
41
problematic.js
Normal file
41
problematic.js
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
console.log("PROBLEMATIC REQUESTS");
|
||||||
|
|
||||||
|
const isThirdParty = (arg) => arg.urlClassification.thirdParty.length > 0;
|
||||||
|
const hasCookie = (arg) => arg.requestHeaders.some((h) => h.name === "Cookie");
|
||||||
|
const hasReferer = (arg) =>
|
||||||
|
arg.requestHeaders.some((h) => h.name === "Referer");
|
||||||
|
|
||||||
|
const getReferer = (arg) =>
|
||||||
|
arg.requestHeaders.filter((h) => h.name === "Referer")[0].value;
|
||||||
|
const getOrigin = async (arg) => {
|
||||||
|
let url;
|
||||||
|
if (arg.tabId) {
|
||||||
|
const tab = await browser.tabs.get(arg.tabId);
|
||||||
|
url = tab.url;
|
||||||
|
} else {
|
||||||
|
url = arg.frameAncestors[0].url;
|
||||||
|
}
|
||||||
|
|
||||||
|
return new URL(url).host;
|
||||||
|
};
|
||||||
|
|
||||||
|
const exposesOrigin = async (arg) => {
|
||||||
|
return getReferer(arg).includes(await getOrigin(arg));
|
||||||
|
};
|
||||||
|
|
||||||
|
browser.webRequest.onBeforeSendHeaders.addListener(
|
||||||
|
async (request) => {
|
||||||
|
// console.log(request.url, request.tabId);
|
||||||
|
if (
|
||||||
|
isThirdParty(request) &&
|
||||||
|
hasReferer(request) &&
|
||||||
|
(await exposesOrigin(request))
|
||||||
|
) {
|
||||||
|
const has_cookie = hasCookie(request);
|
||||||
|
fn = has_cookie ? console.warn : console.log;
|
||||||
|
fn("Leaked referrer! Has cookie:", hasCookie(request), request.url);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{ urls: ["<all_urls>"] },
|
||||||
|
["requestHeaders"]
|
||||||
|
);
|
Loading…
Reference in New Issue
Block a user