From bb86842c92f8a795a0055e45b04c99a307055d67 Mon Sep 17 00:00:00 2001 From: Kuba Orlik Date: Tue, 29 Jun 2021 21:07:50 +0200 Subject: [PATCH] =?UTF-8?q?Dodanie=20=C5=82agodniejszej=20wersji=20maila?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- email-template-harsh.js | 58 ++++++++++++++++++++++++ email-template-polite.js | 48 ++++++++++++++++++++ popup.html | 6 ++- popup.js | 95 ++++++++++++++-------------------------- problematic.js | 31 +++++++++++-- render-data-list.js | 15 +++++++ 6 files changed, 186 insertions(+), 67 deletions(-) create mode 100644 email-template-harsh.js create mode 100644 email-template-polite.js create mode 100644 render-data-list.js diff --git a/email-template-harsh.js b/email-template-harsh.js new file mode 100644 index 0000000..8096ac1 --- /dev/null +++ b/email-template-harsh.js @@ -0,0 +1,58 @@ +function harsh_email_template() { + const text_html = /* HTML */ `

+ Dzień dobry, w dniu ${getDate()} odwiedziłem stronę ${tab.url}. Strona ta + bez mojej zgody wysłała moje dane osobowe do następujących podmiotów: +

+ ${renderDataList()} +

+ Informacje te są automatycznie wysyłane przez Państwa stronę przez + skrypty, które są na niej umieszczone. Pomimo faktu, że nie otrzymują + Państwo bezpośrednio i nie przechowują tych danych, w świetle RODO są + Państwo administratorem moich danych osobowych (utwierdza taki stan rzeczy + + wyrok TSUE w sprawie C‑40/17 ). W załączeniu przesyłam zrzuty ekranów prezentujące wysłane przez + Państwa stronę dane osobowe, wraz z ich adresatami. +

+

+ Dane te zostały przesłane bez mojej zgody i nastąpiło to zanim miałem w + ogóle szansę przeczytać Państwa politykę prywatności. Nie widzę zatem + przesłanki legalizującej takie przetwarzanie moich danych osobowych (na + pewno nie jest to przetwarzanie konieczne do wyświetlenia strony z + technicznego punktu widzenia). Jeżeli takie przesłanki legalizujące jednak + występują, proszę o ich wskazanie, + dla każdego z celów i podmiotów z osobna. +

+

+ Niniejszym zwracam się także z żądaniem wycofania przesłanych przez + Państwa stronę moich danych osobowych z baz wyżej wymienionych podmiotów + oraz przesłania potwierdzenia uwiarygadniającego pomyślne wycofanie tych + danych. Proszę też o przesłanie tożsamości podmiotów, które są + właścicielami wyżej wymienionych domen, abym mógł zapoznać się z ich + politykami prywatności. +

+

+ Proszę też o wysłanie kopii danych zebranych na mój temat i wysłanych do + wyżej wymienionych podmiotów. +

+

+ Apeluję także o wprowadzenie stosownych zmian na stronie tak, aby nie + pozostawiać cienia wątpliwości odnośnie tego, na mocy jakiej przesłanki + legalizującej dane są przetwarzane przez wspomniane podmioty trzecie, lub + tak, aby te dane po prostu nie były wysyłane. Pomoże to zachować + prywatność innym użytkownikom Państwa strony. Polecam Państwa uwadze + oficjalne wytyczne EROD dotyczące zgody w kontekście RODO: + https://edpb.europa.eu/sites/default/files/files/file1/edpb_guidelines_202005_consent_pl.pdf + ). Aby na przykład zapobiec automatycznemu wysyłaniu historii przeglądania + do podmiotów trzecich przez Państwa stronę, można po prostu ustawić + odpowiednio treść nagłówka + + Referrer-Policy . +

`; + return text_html; +} diff --git a/email-template-polite.js b/email-template-polite.js new file mode 100644 index 0000000..1252fa0 --- /dev/null +++ b/email-template-polite.js @@ -0,0 +1,48 @@ +function polite_email_template() { + const text_html = /* HTML */ `

+ Dzień dobry, w dniu ${getDate()} odwiedziłem stronę ${tab.url}. Strona ta + bez mojej zgody wysłała moje dane osobowe do następujących podmiotów: +

+ ${renderDataList()} + +

+ Informacje te są automatycznie wysyłane przez Państwa stronę przez + skrypty, które są na niej umieszczone. Pomimo faktu, że nie otrzymują + Państwo bezpośrednio i nie przechowują tych danych, w świetle RODO są + Państwo administratorem moich danych osobowych (utwierdza taki stan rzeczy + + wyrok TSUE w sprawie C‑40/17 ). W załączeniu przesyłam zrzuty ekranów prezentujące wysłane przez + Państwa stronę dane osobowe, wraz z ich adresatami. +

+

+ Dane te zostały przesłane bez mojej zgody i nastąpiło to zanim miałem w + ogóle szansę przeczytać Państwa politykę prywatności. Nie widzę zatem + przesłanki legalizującej takie przetwarzanie moich danych osobowych (na + pewno nie jest to przetwarzanie konieczne do wyświetlenia strony z + technicznego punktu widzenia). Jeżeli takie przesłanki legalizujące jednak + występują, proszę o ich wskazanie, + dla każdego z celów i podmiotów z osobna. +

+ +

+ Apeluję także o wprowadzenie stosownych zmian na stronie tak, aby nie + pozostawiać cienia wątpliwości odnośnie tego, na mocy jakiej przesłanki + legalizującej dane są przetwarzane przez wspomniane podmioty trzecie, lub + tak, aby te dane po prostu nie były wysyłane. Pomoże to zachować + prywatność innym użytkownikom Państwa strony. Polecam Państwa uwadze + oficjalne wytyczne EROD dotyczące zgody w kontekście RODO: + https://edpb.europa.eu/sites/default/files/files/file1/edpb_guidelines_202005_consent_pl.pdf + ). Aby na przykład zapobiec automatycznemu wysyłaniu historii przeglądania + do podmiotów trzecich przez Państwa stronę, można po prostu ustawić + odpowiednio treść nagłówka + + Referrer-Policy . +

`; + return text_html; +} diff --git a/popup.html b/popup.html index 2d2ea73..689799c 100644 --- a/popup.html +++ b/popup.html @@ -1,5 +1,9 @@ - + +
+ + + diff --git a/popup.js b/popup.js index 7807fcc..367df1b 100644 --- a/popup.js +++ b/popup.js @@ -23,6 +23,12 @@ function sortByShorthost(tabdata) { }); } +function extractAllCookies(requests) { + return Array.from(new Set(requests.map((request) => request.cookie))).filter( + (cookie) => cookie !== undefined + ); +} + function render(memory = {}) { let output_txt = ""; if (!memory?.[tabid]) { @@ -30,11 +36,26 @@ function render(memory = {}) { output.innerHTML = output_txt; return; } + output_txt = /* HTML */ `

+ Część Twojej historii przeglądania została wysłana przez stronę ${tab.url} + do: +

+ `; sortByShorthost(memory[tabid]).forEach(([shorthost, requests]) => { - output_txt += /* HTML */ `${shorthost} ${ - atLeastOneCookiedRequest(requests) ? "🍪" : "" - }
`; + output_txt += /* HTML */ ` +
  • + ${shorthost} + ${atLeastOneCookiedRequest(requests) + ? /* HTML */ `🍪 ` + : ""} +
  • + `; }); + output_txt += ""; output.innerHTML = output_txt; } @@ -54,65 +75,15 @@ function getDate() { return new Date().toISOString().split("T")[0]; } -copy.onclick = () => { - const text_html = /* HTML */ `

    - Dzień dobry, w dniu ${getDate()} odwiedziłem stronę ${tab.url}. Strona ta - bez mojej zgody wysłała moje dane osobowe do następujących podmiotów: -

    - - -

    - Informacje te są automatycznie wysyłane przez Państwa stronę przez - skrypty, które są na niej umieszczone. Pomimo faktu, że nie otrzymują - Państwo bezpośrednio i nie przechowują tych danych, w świetle RODO są - Państwo administratorem moich danych osobowych (utwierdza taki stan rzeczy - - wyrok TSUE w sprawie C‑40/17 ). W załączeniu przesyłam zrzuty ekranów prezentujące wysłane przez - Państwa stronę dane osobowe, wraz z ich adresatami. -

    -

    - Dane te zostały przesłane bez mojej zgody i nastąpiło to zanim miałem w - ogóle szansę przeczytać Państwa politykę prywatności. Nie widzę zatem - przesłanki legalizującej takie przetwarzanie moich danych osobowych (na - pewno nie jest to przetwarzanie konieczne do wyświetlenia strony z punktu - widzenia technicznego). Jeżeli takie przesłanki legalizujące jednak - występują, proszę o ich wskazanie, dla każdego z celów i podmiotów z - osobna. -

    -

    - Niniejszym zwracam się także z żądaniem wycofania przesłanych przez - Państwa stronę moich danych osobowych z baz wyżej wymienionych podmiotów - oraz przesłania potwierdzenia uwiarygadniającego pomyślne wycofanie tych - danych. Proszę też o przesłanie tożsamości podmiotów, które są - właścicielami wyżej wymienionych domen, abym mógł zapoznać się z ich - politykami prywatności. -

    -

    - Proszę też o wysłanie kopii danych zebranych na mój temat i wysłanych do - wyżej wymienionych podmiotów. -

    -

    - Apeluję także o wprowadzenie stosownych zmian na stronie tak, aby nie - pozostawiać cienia wątpliwości odnośnie tego, na mocy jakiej przesłanki - legalizującej dane są przetwarzane przez wspomniane podmioty trzecie, lub - tak, aby te dane po prostu nie były wysyłane. Pomoże to zachować - prywatność innym użytkownikom Państwa strony. -

    `; +copy_harsh.onclick = () => { + const text_html = harsh_email_template(); + navigator.clipboard.write([ + new ClipboardItem({ "text/plain": text_html, "text/html": text_html }), + ]); +}; + +copy_polite.onclick = () => { + const text_html = polite_email_template(); navigator.clipboard.write([ new ClipboardItem({ "text/plain": text_html, "text/html": text_html }), ]); diff --git a/problematic.js b/problematic.js index a9fc3f3..c239b22 100644 --- a/problematic.js +++ b/problematic.js @@ -2,10 +2,31 @@ console.log("PROBLEMATIC REQUESTS"); let memory = {}; +function gethost(url) { + return new URL(request.url).host; +} + +function getshorthost(host) { + console.log("getshort", host); + return host.split(".").slice(-2).join("."); +} + // const isThirdParty = (arg) => arg.urlClassification.thirdParty.length > 0; async function isThirdParty(request) { const request_url = new URL(request.url); const origin_url = new URL(await getOrigin(request)); + /* console.log(request_url.ho, origin_url, request_url.includes(origin_url)); */ + console.log( + request_url.host, + origin_url.host, + request_url.host.includes(origin_url.host) + ); + if (request_url.host.includes(origin_url.host)) { + return false; + } + if (getshorthost(request_url.host) == getshorthost(origin_url.host)) { + return false; + } return ( request_url.origin != origin_url.origin || request.urlClassification.thirdParty.length > 0 @@ -45,13 +66,15 @@ browser.webRequest.onBeforeSendHeaders.addListener( if (!memory[request.tabId]) { memory[request.tabId] = {}; } - const shorthost = new URL(request.url).host - .match(/((\.[^.]+){2}$)/)[0] - .slice(1); + const shorthost = getshorthost(new URL(request.url).host); if (!memory[request.tabId][shorthost]) { memory[request.tabId][shorthost] = []; } - memory[request.tabId][shorthost].push({ url: request.url, has_cookie }); + memory[request.tabId][shorthost].push({ + url: request.url, + has_cookie, + cookie: request.requestHeaders.find((h) => h.name == "Cookie")?.value, + }); } }, { urls: [""] }, diff --git a/render-data-list.js b/render-data-list.js new file mode 100644 index 0000000..2ede69b --- /dev/null +++ b/render-data-list.js @@ -0,0 +1,15 @@ +function renderDataList() { + return /* HTML */ ` `; +}