Terug naar begrippenlijst

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.

Geschreven door Thijn de Haas

Zwaaiende emoji

Thijn Lead developer

Meer over Thijn

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.

Thijn de Haas Lead developer

Meer over Thijn

Mijn programmeeravontuur begon rond mijn twaalfde, toen ik ontdekte dat je met code vrijwel alles kunt maken. Ik begon met het bouwen van kleine projecten en startte al snel mijn eigen hostingdienst, wat me veel leerde over maatwerkcode, serverbeheer en het koppelen aan websites. Deze kennis pas ik nu dagelijks toe in mijn werk aan websites en applicaties.

Als student Applicatieontwikkelaar liep ik drie stages bij Wux, waarbij ik tijdens de eerste stage mijn eerste bedrijf startte, deels op advies van Bo. Deze ervaringen vormden het fundament van mijn rol als lead developer en mede-eigenaar van Wux. Met een constante interesse in nieuwe technieken en het meedenken naar de beste oplossingen, zet ik mijn expertise dagelijks in om complexe vraagstukken op te lossen samen met mijn team.

Twee mannen in overleg tijdens het werk achter hun computerschermen
Zwaaiende emoji

Thijn Back-end developer

Op zoek naar slimme software-oplossingen die jouw bedrijf efficiënter maken?

Het team van Wux ontwikkelt maatwerk software die aansluit bij jouw behoeften. Neem vandaag nog contact op en ontdek hoe we jouw bedrijf elke dag succesvoller kunnen maken.

Meer over software