Cyber Security Academy · Lektion

Indatavalidering och utdataenkodning

Validera all indata på serversidan, koda utdata i rätt kontext och förhindra injicering.

Lektion 1 av 413 steg

Indatavalidering och utdataenkodning är en gratis lektion i Cyber Security Academy på CoddyKit. Detta är lektion 1 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.

Varför indatavalidering är viktigt

Injektionssårbarheter — SQL, kommandon, LDAP, XPath med flera — uppstår när otillförlitlig indata tolkas som kod. Indatavalidering säkerställer att data följer förväntade typer, längder och format innan den behandlas, lagras eller returneras.

Validering med allowlist kontra denylist

Validering med allowlist (whitelist) definierar vad som ÄR tillåtet: endast alfanumeriska tecken, endast heltal i intervallet 1–100 eller endast giltiga e-postformat. Denylist-validering (blacklist) försöker blockera kända skadliga indata och är alltid ofullständig. Föredra allowlistor.

Validering på serversidan

Validering på klientsidan förbättrar användarupplevelsen men ger ingen säkerhet alls — angripare kringgår den enkelt med webbläsarens utvecklarverktyg eller curl. Validera alltid på serversidan. Klientsidevalidering är en bekvämlighet; serversidevalidering är säkerhetskontrollen.

Indatavalidering för olika datatyper

Tal: kontrollera typ och intervall. Strängar: kontrollera längd och teckenuppsättning. Datum: tolka strikt och kontrollera intervall. Filer: kontrollera filändelse OCH magic bytes/MIME-typ — lita aldrig enbart på filändelsen. URL:er: tolka och validera schema, värd och sökvägskomponenter.

Parametriserade frågor förhindrar SQLi

Det viktigaste säkerhetsresultatet av indatavalidering för databaser är att aldrig sammanfoga användarindata med SQL. Använd parametriserade frågor (prepared statements), där användarindata skickas som en parameter och inte interpoleras i frågesträngen.

// WRONG:
const q = "SELECT * FROM users WHERE name = '" + name + "'";
// RIGHT:
const q = "SELECT * FROM users WHERE name = $1";
await client.query(q, [name]);

Kontexter för kodning av utdata

Samma sträng kräver olika kodning beroende på kontext. HTML-brödtext: HTML-koda (< > &). HTML-attribut: HTML-attributkodning. JavaScript: JS-escapning. URL-parameter: URL-koda (procentkodning). Felaktig kodning lämnar luckor som angripare kan utnyttja.

HTML-kodning som skydd mot XSS

Infoga aldrig användardata direkt i HTML. Använd en templating-motor eller ett bibliotek som automatiskt escaper HTML. I React är {value} säkert; dangerouslySetInnerHTML kringgår escapningen. I Django escaper mallar automatiskt HTML, såvida du inte uttryckligen använder filtret safe.

Kodning i JavaScript-kontext

När data infogas i JavaScript (till exempel i en variabel som initieras med användardata) räcker HTML-kodning inte. Använd JSON-kodning: JSON.stringify(value). Det hindrar data från att ta sig ut ur kontexten för en JS-strängliteral.

URL-kodning

Användardata som infogas i URL:er måste procentkodas med encodeURIComponent() (JS) eller urllib.parse.quote() (Python). Okodad data kan manipulera URL-strukturen och leda till öppna omdirigeringar eller sökvägsexekvering.

Content Security Policy som försvar i flera lager

CSP ger ett andra försvarslager mot XSS. En strikt CSP som använder nonces förhindrar körning av infogade skript även om en XSS-payload injiceras, eftersom webbläsaren vägrar köra skript utan rätt nonce-attribut.

Förhindra DOM-baserad XSS

DOM XSS uppstår när JavaScript läser från angriparkontrollerade källor (location.hash, document.URL, cookie) och skriver till farliga sinks (innerHTML, document.write, eval). Granska alla dataflöden från webbläsarens API:er till DOM-sinks med hjälp av statiska analysverktyg.

Kunskapskontroll

Varför är indatavalidering på serversidan nödvändig även när validering på klientsidan har implementerats?

Sammanfattning

Indatavalidering (allowlistor, typkontroll, längdbegränsningar) i kombination med kontextkänslig kodning av utdata (HTML, JS, URL och SQL-parametrisering) är det primära skyddet mot injektions- och XSS-attacker. Båda måste alltid tillämpas på serversidan.

Gratis att börja

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 ”Indatavalidering och utdataenkodning” gratis?

Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Cyber Security Academy, inklusive ”Indatavalidering och utdataenkodning”, 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 ”Indatavalidering och utdataenkodning”?

Validera all indata på serversidan, koda utdata i rätt kontext och förhindra injicering. 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 1 av 4.

Hur lång tid tar lektionen ”Indatavalidering och utdataenkodning”?

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

  1. Indatavalidering och utdataenkodning
  2. Säker hantering av beroenden
  3. OWASP ASVS: Application Security Verification Standard
  4. Tekniker för säker kodgranskning
← Tillbaka till Cyber Security Academy