Lässt es sich mit cremefarbenem Papier, einer Tönung, mehr Kontrast oder größerer Schrift besser lesen? Wählen Sie Ihre Farben und Ihre Schrift, einmalig für alle Seiten.

Kostenlose Lektion

Cross-Site-Scripting (XSS) erkennen und verhindern

Nach dieser Lektion: Ich kann Cross-Site-Scripting erkennen und mit Maskieren verhindern.

Lektion, 45 Min.Keine BefehleDVWA-Lab: SQL-Injection und XSS in der Damn Vulnerable Web Application üben

Wenn eine Webseite fremden Code ausführt

Cross-Site-Scripting, kurz XSS, ist ein Fehler, bei dem eine Webseite Text von Nutzenden als Programmcode in den Browser eines anderen Menschen schreibt. So kann ein Angreifer in fremdem Namen handeln.

Du lernst, wie man das erkennt und mit Maskieren verhindert. Die Regel: Du übst nur an der Webseite deiner eigenen Lab-Kopie, nie an einer fremden Seite und nie ohne Erlaubnis.

Am Ende dieser Lektion

Notiz

Ich kann Cross-Site-Scripting erkennen und mit Maskieren verhindern.

Schlüsselwörter

BegriffWas er bedeutetBeispiel
HTMLdie Sprache, in der eine Webseite beschrieben wird
Skriptein kleines Programm, das im Browser läuftJavaScript
XSSCross-Site-Scripting: fremder Code läuft in deiner Seite
MaskierenSonderzeichen in harmlosen Text umwandeln
Sitzungder Zustand, in dem dich eine Seite als angemeldet kennt
EingabeText, den ein Mensch in ein Feld tippt

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Wie entsteht XSS?

Eine Seite begrüßt dich mit deinem Namen: <p>Hallo Mia</p>. Der Name wurde einfach in den HTML-Text hineingeklebt.

Gibt jemand als Namen <b>Mia</b> ein, zeigt der Browser den Namen fett. Er hält den Text für HTML. Der Browser kann nicht wissen, was die Seite gemeint hat.

Ein Name wird zu HTML

Code: python
name = "<b>Mia</b>"
seite = "<p>Hallo " + name + "</p>"
print(seite)
# Der Browser würde Mia fett zeigen: Der Name wurde als HTML gelesen.
# Ändere den Namen in "Mia" und starte noch einmal.

Warum ist das gefährlich?

Statt <b> kann jemand ein <script>-Element eingeben. Ein Skript läuft im Browser mit den Rechten der Seite. Es kann Inhalte ändern und die Sitzung der Besucherin lesen, mit der sie angemeldet ist.

Bei gespeichertem XSS steht der Text in einem Kommentar oder einem Profil. Jede Person, die es öffnet, führt ihn aus.

Wie verhindert man XSS?

Man maskiert die Eingabe, bevor man sie in HTML schreibt. Die Zeichen, die HTML etwas bedeuten, werden durch harmlose Ersatztexte ersetzt. Aus < wird &lt;, aus > wird &gt;.

Der Browser zeigt dann das Zeichen an und führt nichts aus. Der Name steht auf der Seite, aber er ist nur Text.

Diese Zeichen ersetzt man

ZeichenErsatztextWofür das Zeichen in HTML steht
&&amp;Beginn eines Ersatztexts
<&lt;Beginn eines Elements
>&gt;Ende eines Elements
"&quot;Ende eines Werts in Anführungszeichen

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Maskieren mit der Python-Bibliothek

Code: python
import html

eingabe = '<b>"Hallo" & Willkommen</b>'
print(html.escape(eingabe))
# Ändere die Eingabe und schau, was sich ändert.

Ein häufiger Fehler

Warnung

Viele denken, es genüge, das Wort „script“ zu verbieten. Das stimmt nicht, denn es gibt viele andere Wege, Code in HTML zu schreiben. Maskiere immer jede Eingabe, die du ausgibst. Dann ist es egal, was darin steht.

Warum kommt das &-Zeichen zuerst?

Beim Maskieren muss man mit dem & beginnen. Ersetzt man zuerst < durch &lt; und danach & durch &amp;, würde aus &lt; der Text &amp;lt;.

Dann stünde auf der Seite nicht mehr das Zeichen <, sondern der Text „&lt;“. Zuerst &, dann alle anderen Zeichen.

Die eine Regel

Warnung

Drück oben auf Lab starten und warte, bis DVWA läuft. DVWA ist absichtlich unsicher und deine eigene Kopie ohne Weg ins Internet. Was du hier lernst, richtest du nie gegen eine Seite, die dir nicht gehört.

Was du im Lab ansiehst

Drück auf Öffnen und melde dich als admin mit dem Passwort password an. Öffne die Seite „DVWA Security“ und stelle die Stufe auf Low. In der Menüleiste siehst du die Übungen, darunter zwei zu XSS.

Auf jeder Übungsseite zeigt der Knopf „View Source“ den Code der Seite. Vergleiche den Code bei Low mit dem bei High. Achte darauf, was bei High mit der Eingabe geschieht, bevor sie ausgegeben wird.

Über dieses Lab und seinen Quellcode: DVWA-Lab: SQL-Injection und XSS in der Damn Vulnerable Web Application üben

Sie unterrichten eine Gruppe? Weisen Sie dieses Modul Ihren Studierenden zu, mit Handbuch für Lehrende, automatisch geprüften Aufgaben und einem Lab für jede Person.