Skip to main content
Blog
Blog

Best practices voor het beveiligen van third-party scripts op webpagina's

Third-party scripts kunnen gevoelige gegevens blootstellen in de browsers van je gebruikers. Leer best practices om client-side code te beveiligen en het risico op datalekken te verkleinen.

Jan 21, 2026 8 min read
Best Practices to Secure Third Party Scripts

TL;DR

  • Third-party JavaScript is overal aanwezig (mediaan: 22 scripts per pagina) en wordt uitgevoerd met dezelfde rechten als je eigen code.
  • Als een leverancier wordt gecompromitteerd, geldt dat ook voor jouw website: kwaadaardige scripts kunnen gebruikersgegevens, formuliervelden, cookies en sessietokens benaderen.
  • Best practices voor de beveiliging van third-party scripts zijn: een actuele scriptinventaris + minimale scriptrechten + integriteitscontroles met wijzigingsdetectie en meldingen + continue runtime-monitoring
  • Sommige van deze best practices kunnen worden geïmplementeerd met browsercontroles zoals CSP of handmatige monitoring, maar echte bescherming en naleving van frameworks zoals GDPR en PCI DSS vereisen een gespecialiseerde leverancierstool zoals cside.

Best practices voor het beveiligen van third-party scripts op webpagina's

best-practices-to-secure-3rd-party-scripts-on-your-website
Afbeelding: 4 best practices voor het beveiligen van third-party scripts op je webpagina's

Volgens het HTTP Archive Web Almanac 2024 maakt 92% van de webpagina's gebruik van third-party resources. JavaScript-bestanden zijn het meest voorkomende type third-party resource, goed voor ongeveer 30% van alle third-party verzoeken. In 2024 deed de mediane mobiele pagina 22 JavaScript-verzoeken per pagina. In het 90e percentiel liep dat aantal op tot 68. Op desktop liggen de cijfers in dezelfde orde van grootte: respectievelijk 23 en 70.

Eenmaal toegelaten, draaien scripts vrijelijk. Wanneer een leverancier wordt gecompromitteerd of een CDN wordt gemanipuleerd, kan kwaadaardige code de browser van de gebruiker binnensluipen. In dit artikel bekijken we praktische best practices voor de beveiliging van third-party JavaScript, zonder in te leveren op snelheid of functionaliteit.

1. Volledige scriptinventaris en zichtbaarheid

Een actuele "inventaris" van elk script dat in de browser aan gebruikers wordt aangeboden, is een goed startpunt. De inventaris moet bijhouden waar code vandaan wordt geladen: een third-party leverancier of bibliotheek die je zelf hebt gekozen, of een obscure fourth party?

geen inventaris = geen zichtbaarheid = geen controle

Betaalpagina's zijn bijzonder risicovol. In een ideale wereld zouden er geen third-party scripts op betaalpagina's staan. Nul risico. Maar dat is niet realistisch. Betaalverwerkers en andere checkout-tools vereisen JavaScript voor de betaalflow.

Een client-side beveiligingsplatform zoals cside neemt het handmatige werk uit handen door automatisch een realtime scriptinventaris voor je aan te maken en bij te houden.

2. Minimale scriptrechten

Controleer voor elk script welke gegevens het benadert en vraag jezelf af: waarom? Let goed op scripts die toegang hebben tot gevoelige gegevens zoals formuliervelden, cookies of sessietokens. Niet elk script heeft volledige rechten nodig, maar zonder maatregelen hebben scripts een rechtstreekse weg naar gevoelige informatie.

Waarom zou een analytics-script toegang nodig hebben tot betaalgegevens? Marketingpixels hebben niets te zoeken bij inloggegevens en wachtwoorden, toch?

CSP om te beperken welke scripts worden geladen

Standaard voert een browser elk script uit, inclusief geketende scripts. Het beperken van toegang tot gegevens is cruciaal voor je verdediging. Een Content Security Policy (CSP) bepaalt waar code vandaan mag worden geladen: bijvoorbeeld alleen je eigen servers en goedgekeurde third-party bronnen. Je stelt die regels in via je HTTP-headers of HTML, en de browser handhaaft ze.

CSP controleert alleen waar code vandaan wordt geladen, niet wat die code doet zodra hij actief is. Code is dynamisch en wordt regelmatig bijgewerkt. Als kwaadaardige code wordt geladen vanuit een vertrouwde bron, blokkeert je CSP dat niet.

CSP is een beginpunt, maar biedt verre van een volledige verdediging. CSP's zijn volledig gebaseerd op het brondomein van waaruit een script wordt geladen en kijken niet naar scriptgedrag.

Met cside kun je beleid instellen dat scripttoegang op basis van gedrag beperkt. Dat wil zeggen: bepaalde scripts kunnen worden toegestaan om cookies of formulierinvoer te lezen, terwijl alle andere scripts (inclusief goedgekeurde) worden geblokkeerd bij het uitvoeren van risicovolle browseracties.

3. Controleer integriteit, detecteer wijzigingen en stel meldingen in

Je bewakingsmechanisme moet ook wijzigingen en updates van scripts in de gaten houden. Een script kan op een dag gezond en veilig zijn, maar door een update kan de integriteit worden aangetast.

Een native browsercontrole hiervoor is Subresource Integrity (SRI). SRI voegt een cryptografische hash toe aan scripts of <link>-tags. Het fungeert als garantie voor de integriteit van de code. Wanneer de browser een script laadt, controleert het de hash. Als er ook maar één byte verschilt, voert de browser de code niet uit. SRI werkt goed voor het beschermen van statische third-party assets en detecteert wijzigingen op CDN-niveau. Maar SRI schiet tekort bij dynamische scripts, waar de meeste moderne websites op vertrouwen.

Een leveranciersoplossing (zoals cside) kan worden ingezet om de integriteit van scripts te bewaken via meerdere lagen van een detectie-engine. Beveiligingsteams worden automatisch gewaarschuwd bij een gedragsafwijking of een bekende compromittering van een leverancier in de supply chain.

4. Gebruik runtime-monitoring die kijkt naar scriptgedrag

"Remote scanners" zijn eenvoudig te implementeren, maar hebben beperkte zichtbaarheid. Onderzoek van ISACA concludeert dat deze beveiligingstesttools bedreigingen missen waarbij code conditioneel wordt geladen om dergelijke scans te omzeilen. "Scanner"-oplossingen zijn ook beperkt tot detectie, met weinig mogelijkheden om kwaadaardige code te blokkeren.

Het beoordelen van third-party code vóór uitrol naar productie heeft ook beperkingen. Veel scripts worden eenmalig goedgekeurd, zelden opnieuw beoordeeld, maar veranderen regelmatig. Een script kan de beoordeling doorstaan vóór publicatie, terwijl er maanden later kwaadaardige code in wordt geplaatst.

Runtime-monitoring detecteert gecompromitteerde scripts van vertrouwde bronnen. Wanneer een script plotseling formuliervelden begint te lezen of netwerkverzoeken doet, controleer je inventaris en blokkeer het. Runtime-monitoring houdt scripts in actie in de gaten. Zelfs aspecten zoals DOM-manipulatie kunnen worden gevolgd met runtime-monitoring.

Dit uitvoeren via intern gebouwde tooling wordt al snel onhaalbaar. Je eindigt met het bouwen van je eigen antivirussoftware en investeert veel middelen in een project dat niet aansluit bij je kernactiviteiten. Er zijn genoeg kant-en-klare oplossingen beschikbaar, zoals cside, die runtime-monitoring automatisch uitvoeren op je pagina's en gegevens overzichtelijk presenteren in dashboards en meldingen.

5. Naleving van regelgeving

Compliance heeft de reputatie tijdrovend papierwerk met zich mee te brengen. Client-side maatregelen worden vereist door een groeiend aantal frameworks, waaronder GDPR, PCI DSS en CCPA/CPRA.

Zorg ervoor dat de verwerkingsactiviteiten van je third-party scripts in lijn zijn met de verwachtingen van deze frameworks: transparantie, doelbinding en gegevensbescherming. Dat betekent dat je precies moet begrijpen hoe third-party scripts zich gedragen, zodat je ze nauwkeurig kunt vermelden in je privacyverklaringen. Standaard mogen scripts alleen noodzakelijke gegevens verzamelen (teruggrijpend op het principe van minimale rechten) en moeten beveiligingsmaatregelen gebruikers beschermen tegen client-side gegevensexfiltratie.

Een goed startpunt is het doornemen van de DPA's van elke third-party leverancier die je aan je site toevoegt. Daarin staat beschreven hoe zij van plan zijn de gegevens van jouw gebruikers te verwerken. Om te controleren of hun daadwerkelijke activiteiten overeenkomen met de verwachtingen, kan een tool voor het monitoren van third-party scripts zoals cside worden ingezet.

Waarom websites afhankelijk zijn van third-party JavaScript

Het is een goede zakelijke praktijk voor bouwers om niet zelf stenen te maken, maar te vertrouwen op experts voor materialen en engineering. Hetzelfde geldt voor webontwikkelaars: zij gebruiken third-party tools voor analytics, online betalingen, widgets en andere functies die websites dynamisch en interactief maken.

Er is geen reden om oplossingen opnieuw uit te vinden die al bestaan. Gespecialiseerde tools doen het werk zodat webteams zich kunnen richten op de kernactiviteiten in plaats van op gebruikersinterfaces, A/B-testen, online betaalflows, analytics, locatietracking enzovoort.

Waarom third-party scripts een groot risico vormen voor client-side beveiliging

Het rechtenprobeem van third-party scripts

Dit is het probleem: in de browser wordt alle JavaScript gelijk behandeld.

De DOM maakt geen onderscheid tussen jouw code en de code van een leverancier. Third-party scripts krijgen dezelfde toegang tot gebruikersgegevens en formuliervelden als je eigen first-party code. Ze kunnen formuliervelden uitlezen, cookies benaderen, pagina-inhoud aanpassen en netwerkverzoeken doen.

Dat is precies de kwetsbaarheid waar kwaadwillenden naar op zoek zijn.

Het supply-chain-probleem van third-party scripts

Dat betekent dat als de infrastructuur van een leverancier wordt gecompromitteerd, kwaadaardige scripts rechtstreeks in jouw website kunnen worden geïnjecteerd.

Bij de mediaan wordt 21% van de scripts op mobiele pagina's dynamisch geïnjecteerd. In het 90e percentiel loopt het aantal scripts zelfs op tot 70%. Op desktop zijn de cijfers vergelijkbaar.

Geïnjecteerde scripts kunnen een beveiligingsblinde vlek creëren omdat ze buiten het bereik vallen van traditionele webbeveiligingstools. Het impliceert ook dat dynamisch geïnjecteerde third-party scripts zelfs aanvullende scripts kunnen injecteren die je nooit hebt goedgekeurd.

een datalek bij een van je leveranciers = een datalek in jouw applicatie

Nog erger: een gecompromitteerd script kan zich als een kettingreactie verspreiden over elke website die het script gebruikt. Eén zwakke plek in een veelgebruikt script kan uitgroeien tot een grootschalige supply-chain-aanval.

Simon Wijckmans
Founder & CEO Simon Wijckmans

Founder and CEO of cside. Building better security against client-side executed attacks, and making solutions more accessible to smaller businesses. Web security is not an enterprise only problem.

FAQ

Frequently Asked Questions

Third-party scripts worden tijdens runtime uitgevoerd met dezelfde rechten als first-party code. Ze kunnen formuliervelden, cookies en sessietokens uitlezen, de DOM aanpassen en netwerkverzoeken doen. Als de infrastructuur van een leverancier wordt gecompromitteerd, kan kwaadaardige JavaScript rechtstreeks in de browsers van gebruikers worden geïnjecteerd en kunnen er aanvullende, niet-goedgekeurde scripts worden geladen. Wanneer veelgebruikte scripts worden gemanipuleerd, kan de impact zich als een kettingreactie verspreiden over duizenden sites in een supply-chain-aanval.

Traditionele beveiligingsmaatregelen zoals WAF's en dependency-scanners werken aan de serverzijde. Ze kunnen niet zien wat JavaScript tijdens runtime doet in de browser van de gebruiker, en dat is precies waar client-side aanvallen plaatsvinden. Zelfs CSP, hoewel afgedwongen in de browser, controleert alleen waar scripts vandaan worden geladen en niet welke acties ze uitvoeren.

CSP verkleint het aanvalsoppervlak door te beperken waar scripts vandaan kunnen worden geladen en niet-geautoriseerde domeinen te blokkeren. Het analyseert echter geen scriptgedrag. Als kwaadaardige code wordt aangeboden vanuit een vertrouwde bron, zal CSP toestaan dat deze wordt uitgevoerd. Daarom is CSP alleen onvoldoende en moet het worden gecombineerd met runtime gedragsmonitoring en integriteitscontroles.

Beveiligingsteams moeten beginnen met het opbouwen van een actuele inventaris van scripts die op hun websites worden uitgevoerd. Zonder runtime-zichtbaarheid is het onmogelijk om scripts te beveiligen die je niet kunt zien. Een inventaris brengt scriptbronnen, updates en wijzigingen in kaart, en stelt teams in staat te beoordelen welke gegevens elk script benadert en te beslissen welke scripts toegang mogen hebben tot gevoelige informatie.

Betaalpagina's zijn een geliefd doelwit voor aanvallers omdat ze zeer gevoelige gegevens verwerken, zoals persoonsgegevens en betaalkaartgegevens. Een kwaadaardig script op een betaalpagina kan deze gegevens stelen terwijl gebruikers ze invoeren, wat kan leiden tot regelgevingsrisico's, reputatieschade, juridische stappen en financieel verlies. Hoewel sommige third-party scripts onvermijdelijk zijn, zoals scripts die vereist zijn door betaalverwerkers, vertegenwoordigt elk script een potentieel breekpunt. Niet-essentiële scripts zoals marketing- of chatwidgets moeten worden uitgesloten, en alle noodzakelijke scripts moeten continu worden gemonitord tijdens runtime.

Monitor en Beveilig Je Third-Party Scripts

Gain full visibility and control over every script delivered to your users to enhance site security and performance.

Start gratis, of probeer Business met een proefperiode van 14 dagen.

cside dashboard interface met script monitoring en beveiligingsanalytics
Related Articles
Boek een demo