Eingabevalidierung und Ausgabekodierung
Validieren Sie alle Eingaben serverseitig, kodieren Sie Ausgaben im richtigen Kontext und verhindern Sie Injection-Angriffe.
Eingabevalidierung und Ausgabekodierung ist eine kostenlose Cyber Security 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 Cyber Security Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Cyber Security Academy-Kurs umfasst insgesamt 4 Lektionen.
Warum Eingabevalidierung wichtig ist
Injection-Schwachstellen — SQL-, Command-, LDAP-, XPath-Injection und weitere — entstehen, wenn nicht vertrauenswürdige Eingaben als Code interpretiert werden. Die Eingabevalidierung stellt sicher, dass Daten erwarteten Typen, Längen und Formaten entsprechen, bevor sie verarbeitet, gespeichert oder zurückgegeben werden.
Allowlist- vs. Denylist-Validierung
Die Allowlist- (Whitelist-)Validierung definiert, was akzeptabel IST: nur alphanumerische Zeichen, nur Ganzzahlen im Bereich von 1–100, nur gültige E-Mail-Formate. Eine Denylist (Blacklist) versucht, bekannte schädliche Eingaben zu blockieren, ist aber immer unvollständig. Bevorzugen Sie Allowlists.
Validierung auf der Serverseite
Clientseitige Validierung verbessert die Benutzerfreundlichkeit, bietet aber keinerlei Sicherheit — Angreifer umgehen sie problemlos mit Browser-Entwicklertools oder curl. Validieren Sie immer auf der Serverseite. Clientseitige Validierung ist eine Komfortfunktion; serverseitige Validierung ist die Sicherheitskontrolle.
Eingabevalidierung für verschiedene Datentypen
Zahlen: Prüfen Sie Typ und Wertebereich. Zeichenketten: Prüfen Sie Länge und Zeichensatz. Datumsangaben: Parsen Sie sie strikt und prüfen Sie den Wertebereich. Dateien: Prüfen Sie Erweiterung UND Magic Bytes/MIME-Typ — vertrauen Sie niemals allein auf die Erweiterung. URLs: Parsen und validieren Sie Schema, Host und Pfadkomponenten.
Parametrisierte Abfragen verhindern SQLi
Die wichtigste Maßnahme bei der Eingabevalidierung für Datenbanken besteht darin, Benutzereingaben niemals mit SQL zu verketten. Verwenden Sie parametrisierte Abfragen (Prepared Statements), bei denen Benutzereingaben als Parameter und nicht in die Abfragezeichenfolge interpoliert übergeben werden.
// WRONG:
const q = "SELECT * FROM users WHERE name = '" + name + "'";
// RIGHT:
const q = "SELECT * FROM users WHERE name = $1";
await client.query(q, [name]);Kontexte für Output-Encoding
Für dieselbe Zeichenkette ist je nach Kontext ein anderes Encoding erforderlich. HTML-Body: HTML-Encoding (< > &). HTML-Attribut: HTML-Attribut-Encoding. JavaScript: JS-Escaping. URL-Parameter: URL-Encoding (Percent-Encoding). Falsches Encoding hinterlässt Lücken, die Angreifer ausnutzen können.
HTML-Encoding als Schutz vor XSS
Fügen Sie Benutzerdaten niemals direkt in HTML ein. Verwenden Sie eine Template-Engine oder Bibliothek, die HTML automatisch escaped. In React ist {value} sicher; dangerouslySetInnerHTML umgeht das Escaping. In Django maskieren Templates automatisch, sofern Sie nicht ausdrücklich den safe-Filter verwenden.
Encoding im JavaScript-Kontext
Beim Einfügen von Daten in JavaScript (z. B. in eine mit Benutzerdaten initialisierte Variable) reicht HTML-Encoding nicht aus. Verwenden Sie JSON-Encoding: JSON.stringify(value). Dadurch wird verhindert, dass Daten aus dem Kontext eines JS-String-Literals ausbrechen.
URL-Encoding
In URLs eingefügte, vom Benutzer bereitgestellte Daten müssen mit encodeURIComponent() (JS) oder urllib.parse.quote() (Python) per Percent-Encoding kodiert werden. Nicht kodierte Daten können die URL-Struktur manipulieren und dadurch zu Open Redirects oder Path Traversal führen.
Content Security Policy als Defense-in-Depth
CSP bietet eine zweite Verteidigungslinie gegen XSS. Eine strikte CSP mit Nonces verhindert die Ausführung von Inline-Skripten selbst dann, wenn eine XSS-Payload eingeschleust wird, da der Browser die Ausführung von Skripten ohne das korrekte nonce-Attribut verweigert.
Vermeidung von DOM-basiertem XSS
DOM-XSS tritt auf, wenn JavaScript aus angreifergesteuerten Quellen (location.hash, document.URL, cookie) liest und in gefährliche Senken (innerHTML, document.write, eval) schreibt. Prüfen Sie alle Datenflüsse von Browser-APIs zu DOM-Senken mithilfe statischer Analysetools.
Wissenstest
Warum ist serverseitige Eingabevalidierung auch dann unverzichtbar, wenn clientseitige Validierung implementiert wurde?
Zusammenfassung
Eingabevalidierung (Allowlists, Typprüfung, Längenbegrenzungen) in Kombination mit kontextsensitivem Output-Encoding (HTML, JS, URL, SQL-Parametrisierung) stellt die wichtigste Verteidigung gegen Injection- und XSS-Angriffe dar. Beides muss ausnahmslos serverseitig angewendet werden.
Häufig gestellte Fragen
Ist die Lektion „Eingabevalidierung und Ausgabekodierung“ kostenlos?
Ja — der vollständige Text von „Eingabevalidierung und Ausgabekodierung“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Cyber Security Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Cyber Security Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Eingabevalidierung und Ausgabekodierung“?
Validieren Sie alle Eingaben serverseitig, kodieren Sie Ausgaben im richtigen Kontext und verhindern Sie Injection-Angriffe. Du übst Cyber Security 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 Cyber Security Academy zu starten?
Keine Vorkenntnisse erforderlich. Cyber Security 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 „Eingabevalidierung und Ausgabekodierung“?
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 Cyber Security Academy-Lektion Code schreiben und ausführen?
Ja. Jede Cyber Security 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
- Eingabevalidierung und Ausgabekodierung
- Sicheres Abhängigkeitsmanagement
- OWASP ASVS: Standard zur Überprüfung der Anwendungssicherheit
- Techniken für sichere Code-Reviews