Přístupnostní navigace
E-application
Search Search Close
Bachelor's Thesis
Author of thesis: Dzianis Pilipenka
Acad. year: 2025/2026
Supervisor: Ing. Libor Polčák, Ph.D.
Reviewer: Ing. Jiří Hynek, Ph.D.
JShelter protects users against browser fingerprinting by wrapping JavaScript APIs and modifying their return values. For it to work in Chromium-based browsers, JShelter requires the user to enable the Allow user scripts toggle. The reason is that the current implementation assembles the injection code at runtime and delivers it to the page through the chrome.userScripts API, whose availability is bound to that toggle. As a solution, I wrote a Node.js converter that during the extension build generates a static file containing the wrapper implementations. The file is declared in the manifest as a content script and the browser injects it into the main world of every visited page. Measurements on Chromium showed that the resulting implementation preserves functional equivalence with upstream JShelter in the top-level frame and improves its detection coverage in nested frames nineteenfold. After installation, the extension is ready to use on Chromium without any additional steps from the user.
JShelter, browser fingerprinting, Manifest V3, browser extension, Chromium, content script, main world, JavaScript API wrapping, chrome.userScripts
Date of defence
18.06.2026
Result of the defence
Defended (thesis was successfully defended)
Grading
C
Process of defence
Student nejprve prezentoval výsledky, kterých dosáhl v rámci své práce. Komise se poté seznámila s hodnocením vedoucího a posudkem oponenta práce. Student následně odpověděl na otázky oponenta a na další otázky přítomných. Komise se na základě posudku oponenta, hodnocení vedoucího, přednesené prezentace a odpovědí studenta na položené otázky rozhodla práci hodnotit stupněm C.
Topics for thesis defence
Language of thesis
Czech
Faculty
Fakulta informačních technologií
Department
Department of Information Systems
Study programme
Information Technology (BIT)
Composition of Committee
prof. Dr. Ing. Jan Černocký (předseda) doc. Ing. Zdeněk Vašíček, Ph.D. (místopředseda) Ing. Jiří Hynek, Ph.D. (člen) RNDr. Marek Rychlý, Ph.D. (člen) Ing. Vojtěch Havlena, Ph.D. (člen)
Supervisor’s reportIng. Libor Polčák, Ph.D.
Podle mého názoru pan Pilipenka vypracoval poměrně náročnou práci samostatně a tak prokázal dostatečné znalosti pro obhajobu své práce. Naměřené výsledky ukazují, že by bylo dobré kód co nejdříve přebrat. K dokonalosti však chybí dotažení některých částí, např.:
Práce navazuje na předchozí studentské práce a projekty řešené mj. na FIT. Tvorba webových rozšíření má svá specifika a téma samotné práce pokrývá hodně specifickou oblast v rámci tvorby rozšíření. Úplné pochopení zadání práce a souvisejícího zdrojového kódu považuji za poměrně náročné.
Cílem práce bylo, aby rozšíření poskytovalo stejnou funkcionalitu pomocí jiných prostředků. Hlavní cíl práce byl rozhodně splněn. Ale velká část práce vznikala až na poslední chvíli a na některé aspekty práce se nedostalo.
Práce je primárně implementačního charakteru. Přímo tématem práce se vědecké publikace nezabývají. Od momentu, kdy student skutečně pochopil, co se od něj chce pracoval student samostatně a dobrým způsobem.
Mám pocit, že student ještě na začátku letního semestru úplně nerozuměl zadání projektu, což mohlo být dáno jazykovou bariérou, náročností zadání, případně tím, že student nevyhledával konzultace dostatečně často. Pak jsme měli několik velmi kvalitních konzultací během, kterých bylo zřejmé, že student nejen problematiku pochopil, ale také, že programová část postupuje rychle a správným směrem.
Vzhledem k časové tísni probíhaly implementační práce relativně na poslední chvíli, což mělo i dopad na textovou část práce. Viděl jsem text po kapitolu návrh (včetně). Mé připomínky byly studentem vesměs reflektovány. Další kapitoly jsem neviděl; jsou sice kvalitní, ale daly by se vylepšit.
Student svou práci nezveřejnil, ale s ohledem na licenci a zadání práce pracuji v době psaní posudku na akceptačním testování. Výsledky práce bude třeba ještě doladit - vychází z několik let staré verze generování kódu, apod.
Grade proposed by supervisor: C
Reviewer’s reportIng. Jiří Hynek, Ph.D.
Student splnil zadání. Vytvořil použitelný nástroj řešící konkrétní problém v ekosystému JShelter. Práce nicméně obsahuje některé výše zmíněné nedostatky. Navrhuji hodnocení stupněm C.
Evaluation level: obtížnější zadání
Cílem práce bylo vylepšit nástroj JShelter, který chrání uživatele před otiskováním prohlížeče (browser fingerprinting), tak aby fungoval jako rozšíření prohlížeče Chromium bez nutnosti aktivace přepínače Allow user scripts. Student se musel seznámit s architekturou rozšíření prohlížeče, specifikací Manifest V3, nástrojem JShelter a knihovnou NSCL. Výstupem je Node.js konvertor generující statický soubor s implementací ochranných obálek registrovaných jako content script. Zadání hodnotím jako obtížnější. Považuji ho za splněné.
Kapitoly na sebe logicky navazují – nejprve je pojednáno o problematice rozšíření prohlížeče a nástroji JShelter, poté o návrhu řešení a nakonec o implementaci a měření výsledků. Mohla být nicméně více rozepsána problematika otiskování prohlížeče a současných přístupů k jeho řešení.
V práci se vyskytují občasné jazykové i typografické nedostatky – například špatné pomlčky nebo nesprávné skloňování anglických termínů. Student v práci zmiňuje použití nástroje Claude.
Výstupem práce je Node.js konvertor pro statické generování kódu, který odstraňuje nutnost aktivace vývojářského přepínače Allow user scripts a dle dokumentovaných testů zvyšuje detekční pokrytí nástroje JShelter ve vnořených rámcích.
Výsledky jsou využitelné pro integraci do nástroje JShelter a následné využití v produkčním prostředí.
Evaluation level: zadání splněno
Evaluation level: je v obvyklém rozmezí
Student se zaměřil převážně na technickou dokumentaci a návody týkající se vývoje rozšíření prohlížeče a nástroje JShelter. Tento přístup je nicméně vzhledem k praktickému zaměření tématu pochopitelný.
Grade proposed by reviewer: C
Responsibility: Mgr. et Mgr. Hana Odstrčilová