Woordenlijst XSS (Cross-Site Scripting)

Wat is XSS (Cross-Site Scripting)?

Cross-Site Scripting, of XSS, is een beveiligingsfout in websites die aanvallers in staat stelt schadelijke scripts aan webpagina’s toe te voegen. Meestal worden deze scripts geschreven in JavaScript.

Als iemand een pagina bezoekt die door XSS is aangetast, voert hun browser het script van de aanvaller uit. Dit kan resulteren in gestolen cookies, gekaapte sessies of acties die zonder toestemming van de gebruiker worden uitgevoerd.

XSS, net als SQL-injectie, wordt regelmatig vermeld in de OWASP Top 10 als een van de meest voorkomende kwetsbaarheden van webapplicaties.

plexicus-xss-aanval-illustratie

Hoe werkt XSS?

XSS richt zich vaak op webapplicaties die gebruikersinvoer niet correct controleren en opschonen.

Bijvoorbeeld, als een commentaarveld rauwe HTML of JavaScript toestaat zonder enige filtering, zou een aanvaller code zoals deze kunnen toevoegen:

<script>alert('Hacked!');</script>

Wanneer slachtoffers de pagina bekijken, wordt de kwaadaardige code in hun browser uitgevoerd.

Waarom XSS belangrijk is in cybersecurity

XSS kan leiden tot een grotere inbreuk:

  • Accountovername (sessiecookies stelen om gebruikers te imiteren)
  • Diefstal van gegevens (formuliervelden zoals wachtwoorden of creditcards vastleggen)
  • Phishing-aanvallen (valse inlogformulieren injecteren)
  • Malwarelevering (gebruikers omleiden naar kwaadaardige websites)

Types van XSS

  1. DOM-gebaseerde XSS
  2. De aanval vindt volledig plaats in de browser door manipulatie van het Document Object Model (DOM) zonder de server erbij te betrekken.
  3. Opgeslagen XSS
  4. Kwaadaardig script wordt permanent opgeslagen op de server, zoals in de database of profielpagina.
  5. Gereflecteerde XSS
  6. Script wordt gereflecteerd van een webserver (bijv. in URL of foutmelding), het script wordt uitgevoerd wanneer het slachtoffer op een door aanvallers vervaardigde link klikt.

Hoe XSS te voorkomen

  • Invoersanitisatie & uitvoerencoding: altijd gebruikersinvoergegevens schoonmaken voordat ze worden verwerkt, gebruikersinvoer transformeren naar een veilig formaat
  • Gebruik Content Security Policy (CSP): beperkt welke scripts in de browser kunnen worden uitgevoerd.
  • Vermijd eval() en inline JavaScript: om injectierisico’s te verminderen.
  • Beveiligingstesten (DAST/IAST): voer beveiligingstesten uit om vroegtijdig kwetsbaarheden te detecteren

Voorbeeld in de echte wereld - Samy worm (MySpace, 2005)

Wat er gebeurde: Samy Kamkar publiceerde een MySpace-profiel dat een opgeslagen XSS-payload bevatte. Wanneer andere gebruikers het profiel bekeken, werd de payload in hun browsers uitgevoerd, het (a) voegde Samy toe als vriend, (b) voegde de zin “Samy is mijn held” toe aan hun profielen, en (c) repliceerde zichzelf naar de profielpagina’s van die gebruikers.

Impact: De worm verspreidde zichzelf naar ~1 miljoen gebruikers binnen ~20 uur, waardoor MySpace tijdelijk offline ging.

Waarom het werkte: MySpace stond niet-ontsnapte HTML/attributen toe in profielvelden, waardoor opgeslagen scriptuitvoering in de browsers van bezoekers mogelijk was.

Lessen / reparatie: Juiste uitvoercodering, invoersanering, verwijdering van HTML in profielvelden en snelle patching. Samy kreeg later juridische gevolgen en MySpace implementeerde filters.

Gerelateerde termen

Volgende Stappen

Klaar om uw applicaties te beveiligen? Kies uw pad vooruit.

Sluit u aan bij 500+ bedrijven die hun applicaties al beveiligen met Plexicus

SOC 2 Compliant
ISO 27001 Certified
Enterprise Ready