Cross-Site Scripting (XSS)

Andre betegnelser

XSS

AI

Automatisering

Branding

Design

Marketing

Procesoptimering

SaaS

SEO

Sikkerhed

UX

Webudvikling

Cross-Site Scripting (XSS) er en sikkerhedssårbarhed, hvor en angriber får ondsindet JavaScript eksekveret i en anden brugers browser via et legitimt website. Angrebet udnytter manglende håndtering af brugerinput og brud på tillidsgrænsen mellem data og kode.

Hvad er Cross-Site Scripting?

XSS opstår, når et website gengiver brugerleveret input i HTML, JavaScript eller DOM uden korrekt escaping eller kontekstbevidst håndtering. Browseren kan ikke skelne mellem legitim kode og injiceret kode og eksekverer derfor angriberens payload som om den kom fra sitet selv.

Det er et klient-side angreb med server-side årsag.

Typer af XSS

Stored XSS

  • Payload gemmes på serveren (fx kommentarer, profiler)

  • Rammer alle brugere, der ser indholdet

  • Høj impact

Reflected XSS

  • Payload sendes via request (fx querystring)

  • Eksekveres straks i svaret

  • Kræver ofte social engineering

DOM-based XSS

  • Payload håndteres udelukkende i browseren

  • Ofte overset i klassiske audits

  • Opstår i JavaScript-logik

Hvordan opstår problemet?

XSS er muligt, når:

  • Brugerinput ikke valideres eller escapes korrekt

  • Output kontekst ikke respekteres (HTML, JS, URL, CSS)

  • Frameworks omgås eller misbruges

  • Legacy templating eller manuel DOM-manipulation anvendes

Hvorfor er XSS alvorligt?

Sikkerhed

  • Session hijacking

  • Cookie-tyveri

  • Account takeover

  • Keylogging og credential harvesting

  • Client-side malware

Forretning

  • Brugertillid kompromitteres

  • Brand-skade

  • Potentielle databrud

Compliance

  • Brud på databeskyttelse

  • Audit-fund og bøder

Typiske angrebsscenarier

  • Kommentar- og feedbackfelter

  • Søgefelter

  • URL-parametre

  • CMS-indhold

  • Tredjeparts-widgets

Best Practice – forebyggelse

Output escaping (kontekstafhængigt)

  • HTML-escape i HTML-kontekst

  • JS-escape i JavaScript-kontekst

  • URL-encode i URL-kontekst

Brug sikre frameworks korrekt

  • Undgå innerHTML

  • Brug templating med auto-escaping

  • Stol ikke på “trusted” input

Content Security Policy (CSP)

  • Begræns script-kilder

  • Undgå unsafe-inline

  • Brug nonces eller hashes

Cookie-beskyttelse

  • HttpOnly

  • Secure

  • Begrænset scope

Hvad beskytter ikke mod XSS?

  • Input-validering alene

  • HTTPS

  • WAF som eneste forsvar

  • “Vi renser inputtet”

XSS forhindres ved korrekt output-håndtering.

Forretnings- og udviklingsmæssig betydning

Systemisk risiko

XSS kompromitterer alle brugere, ikke kun én konto.

Udviklingsdisciplin

XSS opstår typisk, hvor man afviger fra framework-konventioner.

Skalerbarhed

Jo mere dynamisk frontend, desto større risiko uden klare patterns.

Udfordringer og løsninger

Udfordring: Legacy templates

Løsning: Centraliser escaping og udfas manuel HTML-generering

Udfordring: Tredjeparts scripts

Løsning: CSP og sandboxing

Udfordring: SPA-kompleksitet

Løsning: Strict DOM-manipulation og reviews

Opsummering

Cross-Site Scripting er ikke et edge-case.

Det er et strukturelt problem.

Hvis data kan blive behandlet som kode, vil det ske.

Professionel XSS-beskyttelse kræver:

  • Klar adskillelse mellem data og kode

  • Kontekstbevidst escaping

  • CSP som sidste forsvarslinje

Relaterede begreber

Book et møde

Hvornår?

Vælg dato