Firefox veiliger maken: tracking voorkomen
NoScript voorkomt tracking en andere ongein die met behulp van JavaSript op een website wordt gezet. En de addon Smart Referer verwijdert informatie uit HTTP-requests waaruit anderen kunnen destilleren welke websites je bezoekt.
Voor de reclame- en tracking-branche is JavaScript een handig hulpmiddel. Je kunt daarmee gebruikers met bijvoorbeeld Browser Fingerpicking website-overstijgend volgen en op basis van verschillende browserkenmerken weer herkennen. JavaScript-code is bovendien een potentieel
veiligheidsrisico. Aanvallers kunnen met een kwaadwillend script bijvoorbeeld je inloggegevens afvangen. Security- en ook privacy-bewuste gebruikers moeten JavaScript daarom altijd met enige argwaan bekijken.
De Firefox-add-on NoScript beschermt je tegen boosaardige JavaScript-scripts door de beslissing over het downloaden en uitvoeren ervan bij de gebruiker te leggen. Naast JavaScript filtert NoScript ook andere webtechnieken zoals lettertypen en plugins eruit.
De add-on is bij Mozilla te vinden onder de naam ‘NoScript Security Suite (door Giorgio Maone)’. Na het installeren zie je een pictogram met een S rechtsboven naast de adresbalk staan. Met de standaard
instellingen blokkeert NoScript naast JavaScript ook andere content.
Om een beetje vertrouwd te raken met NoScript, kun je de instellingen aanpassen zodat je alleen het verwerken van JavaScript tegengaat. Klik op het NoScript-pictogram rechtsboven en doe dat vervolgens nog een keer op het pictogram voor de opties, linksboven. Vink alle instellingen aan op het tabblad ‘Algemeen / STANDAARD’, met uitzondering van ‘script’.
Elk domein wordt bij NoScript aan een vertrouwenszone toegekend. Standaard bevindt elk domein zich in eerste instantie in de vertrouwenszone STANDAARD, die je zonet aangepast hebt. Als je een website opent, dan wordt iedere JavaScript-resource op die website vervolgens afzonderlijk geblokkeerd door NoScript.
De add-on laat de domeinen van de ingebedde resources zien en toont de bijbehorende vertrouwenszone. De afbeelding rechtsonder laat zien dat onze website JavaScript van vier verschillende bronnen gebruikt, een van onszelf en een paar van externe aanbieders als googletagservices, rawkit en typekit.
VERDEELD VERTROUWEN
Om het downloaden van JavaScript te regelen, maakt NoScript onderscheid tussen vijf vertrouwenszones. STANDAARD geldt (standaard) voor elke website en domeinnaam tot daar een andere vertrouwenszone aan toegekend is. De zone ‘Tijd. VERTROUWD’ staat het downloaden van JavaScript en andere content tijdelijk toe. Als je de browser afsluit of de functie ‘Tijdelijke toestemmingen intrekken’ gebruikt, dan worden alle tijdelijke instellingen door de add-on weer teruggezet op hun oorspronkelijke instellingen.
Websites die in de vertrouwenszone VERTROUWD staan, mogen van NoScript altijd JavaScript en andere content gebruiken. Als je een website helemaal niet vertrouwt en daarvoor behalve JavaScript ook andere content zoals fonts of HTML5-elementen (video’s, audio) altijd wilt blokkeren, kun je er de vertrouwenszone ‘Niet vertrouwd’ aan toekennen. Met de vertrouwenszone ‘Aangepast’ kun je het downloaden van content afzonderlijk instellen. Die vertrouwenszone is met name bedoeld voor gevorderde gebruikers. Als gewone gebruiker zul je hoofdzakelijk de vertrouwenszones ‘Tijdelijk VERTROUWD’ en ‘VERTROUWD’ gebruiken.
De add-ons die we noemden in de artikelen in de vorige c’t over het veilig maken van Firefox, werken geruisloos op de achtergrond. Bij NoScript is dat anders, je zult zelf actief aan de slag moeten om de JavaScript-code te identificeren en vrij te geven die per se noodzakelijk is voor het functioneren van een website – bijvoorbeeld omdat er apart dynamische content gedownload wordt.
NOSCRIPT IN DE PRAKTIJK
Aan de hand van een voorbeeld willen we laten zien hoe het werken met NoScript in de praktijk gaat. Stel dat je bij je bank wilt inloggen om online te bankieren, dan heb je daar normaal gesproken een gebruikersnaam en wachtwoord voor nodig. Bij het aanroepen van de startpagina van je bank blokkeert NoScript in eerste instantie alle JavaScript-resources. Pas na het vrijgeven en het downloaden van de JavaScript-code kun je dan überhaupt pas inloggen bij je bank. Bij de ING zie je bijvoorbeeld meteen de melding ‘Javascript is uitgeschakeld’ en kom je niet verder als je dat niet eerst inschakelt.
Dat kun je voor het domein ing.nl in eerste instantie tijdelijk doen. Klik daarvoor op het pictogram van de extensie en daarna op Tijd. VERTROUWD. Kijk daarna of alles werkt zoals de bedoeling is. Als de website verder goed functioneert, dan kun je de vertrouwenszone op VERTROUWD zetten en die instelling daarmee permanent bewaren – dus ook voor een volgend bezoek.
Het groene slotpictogram is daarbij overigens een indicatie voor het feit dat Firefox de JavaScriptresource(s) via een met TLS versleutelde verbinding downloadt. Als dat pictogram rood is, dan gebruikt het domein ook onversleutelde verbindingen. Dat is wel een risico, omdat onversleutelde verbindingen vatbaar zijn voor zogeheten man-in-the-middle-aanvalen (MITM) en iemand dan schadelijke JavaScriptcode kan binnensluizen. Voordat je een domein vertrouwt en het downloaden en uitvoeren toestaat, moet je er dus op letten dat het slotpictogram groen is.
Standaard worden er bij NoScript al een aantal uitzonderingen ingesteld – domeinen waarvan de content niet geblokkeerd wordt. Dat zijn er iets minder dan 40, waaronder die van Google, Microsoft en PayPal. De toegestane domeinen staan op het tabblad ‘Toestemmingen per website’. Ervaren gebruikers kunnen de vooraf gedefinieerde uitzonderingen allemaal op ‘Niet vertrouwd’ zetten. Dat is de enige
manier om complete controle te krijgen over welke JavaScript-resources Firefox bij de door jou vertrouwde websites downloadt en uitvoert.
VERRADERLIJKE WERKWIJZE
Voor het tracken van gebruikers kan echter niet alleen ingebedde content ingezet worden. Het volstaat ook al om een browser contact te laten maken met een nieuwsgierige server. Als je een website aanroept, dan onderhandelt de browser als onderdeel van het contact maken via de zogeheten HTTP-referer: de url van de website waarop je je bevindt en van waaruit je naar de nieuwe website wilt gaan. De exploitant van een website kan daarmee dus achterhalen via welke website je bij hem terecht bent gekomen. Maar ook andere aanbieders, die bijvoorbeeld reclame aan de opgeroepen website toevoegen, kunnen met de referer achterhalen welke website je op dat moment aan het bekijken bent.
De HTTP-referer is daarmee naast cookies een geschikt kenmerk voor het tracken op internet. De addon Smart Referer haalt de url van de actuele website uit de referer. Website-exploitanten en externe aanbieders kunnen dan geen bruikbare informatie meer uit de HTTP-referer halen.
SMART REFERER IN ACTIE
Aan de hand van een voorbeeld kunnen we gedetailleerd laten zien welke HTTP-headerinformatie een browser normaal gesproken verstuurt en hoe Smart Referer die verandert. Als je bijvoorbeeld een review over een Synology-NAS op de website van c’t leest en daar op de link naar Synology klikt, zie je bij de Developer Tools dat de volgende informatie in de HTTPreferer meegestuurd wordt: Accept text/html,application/xhtml+xml, application/xml;q=0.9,*/*;q=0.8 Accept-Encoding gzip, deflate, br Accept-Language nl,en-US;q=0.7,en;q=0.3 Cache-Control max-age=0
Connection keep-alive
Host www.synology.com
Referer https://www.ct.nl/reviews/synology … Upgrade-Insecure-Requests 1
User-Agent Mozilla/5.0 (Windows NT 10.0; …) Gecko/20100101 Firefox/61.0
De website waar je naartoe gaat weet vervolgens dat je van de website van c’t afkomt. Op die manier weten zij bijvoorbeeld waar hun klanten zitten. Maar als er op die manier JavaScript-code van Google gedownload wordt, weet Google dan meteen net zo goed welke website(s) je bezoekt.
Het komt ook voor dat persoonlijke gegevens zoals het e-mailadres via de HTTP-header dan wel de referer naar andere partijen worden doorgestuurd: Host: "https://ad.doubleclick.net/adj/[...]" Referer: "http://submit.sports.com/...?email=john.doe@email.com" In het kleine beetje informatie dat er in een HTTPreferrer zit kan op zich dus ook al een heleboel tracking-potentieel zitten.
Smart Referer bouwt het referer-veld voor vreemde websites om. Van de oorspronkelijke aanvraag wordt dan het volgende gemaakt: Accept text/html,application/xhtml+xml, application/xml;q=0.9,*/*;q=0.8 Accept-Encoding gzip, deflate, br Accept-Language nl,en-US;q=0.7,en;q=0.3 Cache-Control max-age=0
Connection keep-alive
Host www.synology.com
Referer https://www.synology.com/nl-nl Upgrade-Insecure-Requests 1
User-Agent Mozilla/5.0 (Windows NT 10.0; …) Gecko/20100101 Firefox/61.0
De domeinnaam www.ct.nl duikt bij de referer dan niet meer op. Smart Referer heeft het vervangen door waar de gebruiker naartoe wil in plaats van waar hij vandaar komt. Op die manier is door externe partijen (zoals Google) niet meer te achterhalen van welke domeinnaam de aanvraag vandaan komt.
INGEBRUIKNAME
De add-on Smart Referer is bij Mozilla te vinden onder de naam ‘Smart Referer (door meh., Alexander Schlarb)’. Na het installeren zie je het pictogram van een schild rechts naast de adresbalk. Smart Referer werkt na het installeren met standaardinstellingen, die je in eerste instantie kunt laten voor wat ze zijn.
Mocht een website in een zelden voorkomend geval niet meer zonder problemen werken, dan kan het nodig zijn dat je Smart Referer tijdelijk deactiveert. Met een klik op het pictogram kun je de add-on makkelijk actief dan wel niet actief maken. Je kunt voor de desbetreffende website of domeinnaam ook een uitzondering definiëren. Om dat te doen, open je de Preferences van Smart Referer en stel je de uitzondering in (zie de afbeelding op deze pagina).
Standaard stuurt Smart Referer de oorspronkelijke HTTP-referer niet meer door. Een uitzondering daarop zijn echter de subdomeinen. Tussen het subdomein a.example.com en b.example.com wordt ook na het installeren van de add-on de echte HTTP-referer-informatie uitgewisseld. Als je dat niet wilt, dan moet je de standaardinstelling van Smart Referer aanpassen. Ga naar de Preferences en activeer daar de ‘Strict Mode’.
In het volgende artikel gaat het onder meer om tracking-parameters die bij url’s meegestuurd worden – en hoe je daar vanaf komt.
De HTTP-referer is naast cookies een geschikt kenmerk voor het tracken op internet