Cross-Site Scripting (XSS)
Cross-Site Scripting (XSS) is een type beveiligingslek waarbij een aanvaller kwaadaardige scripts injecteert in een website of webapplicatie, die vervolgens worden uitgevoerd in de browser van een nietsvermoedende gebruiker. Een ogenschijnlijk onschuldig bericht activeert bij openen een script dat bijvoorbeeld cookies steelt of nepformulieren toont. Het gevaar? De aanval komt van een vertrouwde bron: jouw website.
Inhoudsopgave
De browser trapt erin
Bij XSS maakt de aanvaller slim misbruik van het vertrouwen tussen de gebruiker en de website. De browser denkt: “Als dit van deze site komt, dan zal het wel kloppen.” En voert het script netjes uit. Dat script kan dan van alles doen: inloggegevens onderscheppen, iemand ongemerkt laten klikken op knoppen, of zelfs sessies kapen. Omdat het script draait met de rechten van de gebruiker, is de impact vaak groter dan je denkt.
Hoe komt dat script daar?
XSS ontstaat meestal doordat gebruikersinvoer niet goed wordt gecontroleerd of opgeschoond. Bijvoorbeeld:
- Een zoekveld waarin je HTML kunt typen
- Een commentaarvak dat scripts toestaat
- Een URL die je letterlijk op de pagina weergeeft zonder filter
Als je die invoer zomaar in je pagina plaatst zonder te ontsnappen of te filteren, geef je kwaadwillenden vrij spel.
Eén lek, drie routes naar ellende
Niet alle XSS-aanvallen zijn gelijk. Er zijn drie hoofdtypes:
- Stored XSS: Het script wordt permanent opgeslagen in je database (bijvoorbeeld via een formulier) en uitgevoerd bij elk bezoek.
- Reflected XSS: Het script zit in een URL en wordt direct uitgevoerd zodra de pagina laadt.
- DOM-based XSS: De aanval gebeurt puur in de browser, via manipulatie van het Document Object Model (DOM) zonder dat de server iets merkt.
Alle drie hebben hetzelfde doel: de controle overnemen, gegevens stelen of vertrouwen misbruiken.
Veelgestelde vragen
Het draait in de context van de gebruiker, met toegang tot cookies, sessies en ingevoerde gegevens. Daardoor voelt het alsof de aanval van jouw site zelf komt.
Door invoer te valideren en uitvoer te ontsnappen. Gebruik ook frameworks of libraries die dit standaard goed doen (zoals React of Vue).
Ja. Ondanks awareness blijft het één van de meest voorkomende kwetsbaarheden volgens OWASP (Open Worldwide Application Security Project).
Nee. Elke website die gebruikersinvoer toont zonder filtering is kwetsbaar, of je nu 100 bezoekers hebt of 1 miljoen.
Gerelateerde begrippen
- Abstraction
- Access Control
- Affiliate link
- AJAX
- Algoritme
- Apache
- API
- Big data
- Binary Tree
- Bitbucket
- Blockchain
- Bug
- Caching
- ChatGPT
- Cloudflare
- Codebase
- Content Delivery Network (CDN)
- Content Management Systeem
- Cookietijd
- Customer Relationship Management (CRM)
- Database Management System (DBMS)
- Debugging
- Deep Learning
- Depth-First Search (DFS)