Hvad er XSS (Cross-Site Scripting)?
Cross-Site Scripting, eller XSS, er en sikkerhedsfejl på hjemmesider, der lader angribere tilføje skadelige scripts til websider. Ofte er disse scripts skrevet i JavaScript.
Hvis nogen besøger en side, der er påvirket af XSS, kører deres browser angriberens script. Dette kan resultere i stjålne cookies, kaprede sessioner eller handlinger udført uden brugerens tilladelse.
XSS, ligesom SQL Injection, er regelmæssigt opført i OWASP Top 10 som en af de mest almindelige sårbarheder i webapplikationer.

Hvordan fungerer XSS?
XSS retter sig ofte mod webapplikationer, der ikke korrekt kontrollerer og renser brugerinput.
For eksempel, hvis en kommentarboks tillader rå HTML eller JavaScript uden nogen filtrering, kunne en angriber tilføje kode som denne:
<script>alert('Hacked!');</script>
Når ofre ser siden, kører den skadelige kode i deres browser.
Hvorfor XSS er vigtigt i cybersikkerhed
XSS kan føre til et større brud:
- Kontoovertagelse (stjæle sessionscookies for at udgive sig for brugere)
- Datatyveri (opsnappe formularinput som adgangskoder eller kreditkort)
- Phishing-angreb (indsprøjte falske login-formularer)
- Malware-levering (omdirigere brugere til ondsindede websites)
Typer af XSS
- DOM-baseret XSS
- Angrebet sker udelukkende i browseren ved at manipulere Document Object Model (DOM) uden at involvere serveren.
- Lagret XSS
- Ondsindet script er permanent lagret på serveren, såsom i databasen, profilside.
- Reflekteret XSS
- Scriptet reflekteres fra en webserver (f.eks. i URL eller fejlmeddelelse), scriptet vil blive udført, når offeret klikker på et speciallavet link af angribere.
Hvordan man forhindrer XSS
- Input-sanitization & output-kodning: altid rense brugerinputdata før behandling, transformere brugerinput til et sikkert format
- Brug Content Security Policy (CSP): begrænser hvilke scripts der kan udføres i browseren.
- Undgå eval() og inline JavaScript: for at reducere injektionsrisici.
- Sikkerhedstest (DAST/IAST): kør sikkerhedstest for at opdage sårbarheder tidligt
Eksempel i virkelige verden - Samy-ormen (MySpace, 2005)
Hvad skete der: Samy Kamkar offentliggjorde en MySpace-profil, der indeholdt en lagret XSS-payload. Når andre brugere så profilen, kørte payloaden i deres browsere, den (a) tilføjede Samy som ven, (b) tilføjede sætningen “Samy er min helt” til deres profiler, og (c) replikerede sig selv til disse brugeres profilsider.
Indvirkning: Ormen selv-replikerede til ~1 million brugere inden for ~20 timer, hvilket tvang MySpace offline midlertidigt.
Hvorfor det virkede: MySpace tillod uescape HTML/attributter i profilfelter, hvilket muliggjorde lagret scriptudførelse i besøgendes browsere.
Lektioner / løsning: Korrekt outputkodning, inputsanitering, fjernelse af HTML i profilfelter og hurtig patching. Samy stod senere over for juridiske konsekvenser, og MySpace implementerede filtre.
Relaterede Termer
- SQL Injection
- DAST (Dynamisk Applikationssikkerhedstest)
- OWASP Top 10
- CSRF (Cross-Site Request Forgery)