Warum Web-Grundlagen Pflicht für Web Security sind
Web Security ist heute das zentrale Thema in der offensiven und defensiven IT-Sicherheit. OWASP Top 10, Bug Bounty, Pentesting, SOC-Arbeit - überall stehen Webanwendungen im Mittelpunkt. Wer die Grundlagen nicht kennt, behandelt Symptome, ohne die Ursache zu verstehen.
Ein einfaches Beispiel: Ein Pentester sieht in Burp Suite einen Request mit einem Set-Cookie-Header ohne HttpOnly-Flag. Wer nicht weiß, was das bedeutet, scrollt drueber weg. Wer es weiß, erkennt ein potenzielles Session-Hijacking-Risiko - und kann es im Bericht dokumentieren.
Die gute Nachricht: Du musst kein Frontend-Entwickler werden. Lese-Verständnis genügt. Dieser Guide zeigt genau, was du wissen musst - und was du getrost weglassen kannst.
- HTTP ist die Sprache, in der Browser und Server sprechen - du musst sie lesen können
- Cookies und Sessions sind die Schicht, auf der Authentifizierung basiert
- HTML und JavaScript bestimmen, was im Browser passiert - und wo XSS entsteht
- APIs sind der Hauptangriffspunkt moderner Webanwendungen
- Statuscodes, Header und Body sind die Rohdaten jeder Web-Analyse
Browser, Server, Request und Response
Hinter jedem Klick auf einen Link steckt ein strukturierter Ablauf. Wer ihn Schritt für Schritt kennt, versteht, wo Angriffe ansetzen können.
- 1DNS-Aufloesung: Der Browser fragt einen DNS-Server nach der IP-Adresse der Domain (z.B.
example.com→93.184.216.34). - 2TCP-Verbindung: Browser und Server etablieren eine TCP-Verbindung (Three-Way-Handshake: SYN, SYN-ACK, ACK).
- 3TLS-Handshake (bei HTTPS): Zertifikat wird geprüft, ein gemeinsamer Sitzungsschlüssel wird vereinbart, ab jetzt ist alles verschlüsselt.
- 4HTTP-Request: Der Browser sendet den Request (z.B.
GET /login HTTP/1.1) mit Headern wieHost,Cookie,User-Agent. - 5Server-Verarbeitung: Webserver (z.B. nginx) und Applikation (z.B. Node.js, Python) verarbeiten die Anfrage, lesen ggf. aus einer Datenbank.
- 6HTTP-Response: Der Server antwortet mit einem Statuscode (z.B.
200 OK), Response-Headern und einem Body (HTML, JSON usw.). - 7Rendering: Der Browser parst HTML, lädt CSS und JavaScript nach, baut den DOM auf und zeigt die Seite an.
Jeder dieser Schritte ist ein potenzieller Angriffspunkt: DNS kann vergiftet werden, TLS-Zertifikate können gefaelscht sein, HTTP-Header können fehlen, Applikationslogik kann Lücken haben.
HTTP verständlich erklärt
HTTP (HyperText Transfer Protocol) ist das zustandslose Anfrage-Antwort-Protokoll des Webs. Jeder Request ist unabhaengig - der Server "erinnert" sich standardmäßig nicht an vorherige Anfragen. Cookies und Sessions sind der Mechanismus, der diesen Zustand kuenstlich herstellt.
HTTP-Methoden
| Methode | Bedeutung | Security-Hinweis |
|---|---|---|
| GET | Ressource abrufen | Parameter in URL sichtbar; nie sensible Daten in GET-Parametern |
| POST | Daten senden / Ressource erstellen | Daten im Body; trotzdem HTTPS nötig, Body ist nicht "unsichtbar" |
| PUT | Ressource vollständig ersetzen | Autorisierungsprüfung essentiell - wer darf ersetzen? |
| PATCH | Ressource teilweise aktualisieren | Mass-Assignment-Risiko wenn keine Feldfilterung |
| DELETE | Ressource löschen | IDOR-Risiko: darf dieser User das Objekt löschen? |
Header und Body
Ein HTTP-Request besteht aus drei Teilen: der Startzeile (Methode, Pfad, HTTP-Version), Headern (Schlüsselpaar-Metadaten) und einem optionalen Body (Daten, z.B. JSON oder Formulardaten). Der Response hat dieselbe Struktur: Statuszeile, Header, Body.
Sicherheitsrelevante Request-Header: Authorization (traegt Token oder Basic-Auth), Cookie (Sitzungscookies), Origin (CORS-Herkunft), Content-Type (Dateiformat des Body). Response-Header wie Set-Cookie, Content-Security-Policy und Strict-Transport-Security steuern den Browser-Verhalten direkt.
HTML, CSS, JavaScript einordnen
Webanwendungen bestehen aus drei Schichten, die jeweils unterschiedliche Aufgaben haben - und unterschiedliche Security-Relevanz.
| Schicht | Aufgabe | Security-Relevanz |
|---|---|---|
| HTML | Struktur und Inhalt der Seite | Formulare, Links, Eingabefelder - der Hauptvektor für Injection-Angriffe |
| CSS | Darstellung und Layout | Weniger kritisch; kann für Clickjacking oder UI-Redressing missbraucht werden |
| JavaScript | Verhalten und dynamische Interaktion | Läuft im Browser des Nutzers - XSS-Angriffe injizieren fremden JS-Code |
XSS (Cross-Site Scripting) - defensiv verstehen: Wenn eine Webanwendung Nutzereingaben ungefiltert in HTML ausgibt, kann schadhafter JavaScript-Code im Browser eines anderen Nutzers ausgeführt werden. Beispiel: Ein Kommentarfeld gibt <script>alert(1)</script> ungefiltert aus. Die Verteidigung besteht in Output-Encoding (z.B. < statt <) und einer strengen Content Security Policy. Das Konzept zu kennen hilft, beim Code-Review oder im Lab entsprechende Muster zu erkennen.
HTTP-Statuscodes lesen
Statuscodes sind dreistellige Zahlen im HTTP-Response. Sie sagen, ob eine Anfrage erfolgreich war, wohin umgeleitet werden soll oder warum etwas fehlgeschlagen ist. In Burp Suite, DevTools und Logs sind sie die erste Orientierung.
| Code | Bedeutung | Security-Relevanz |
|---|---|---|
| 200 | OK | Anfrage erfolgreich; bei Zugriffsendpoints: zeigt an, dass der Zugriff gewaehrt wurde |
| 201 | Created | Ressource wurde angelegt; wichtig bei POST-Endpoints (ungewollte Erstellung durch CSRF?) |
| 301 | Moved Permanently | Permanente Weiterleitung; Open Redirect wenn Ziel-URL aus Input kommt |
| 302 | Found | Temporaere Weiterleitung; Login-Redirects oft hier; gleiche Open-Redirect-Gefahr |
| 304 | Not Modified | Cache noch gültig; kein Body; Cache-Poisoning-Risiko bei fehlerhaftem Caching |
| 400 | Bad Request | Ungueltige Anfrage; Hinweis auf fehlende Input-Validierung oder fehlerhafte Payloads |
| 401 | Unauthorized | Keine gueltigen Credentials; Brute-Force-Erkennung sollte hier greifen |
| 403 | Forbidden | Authentifiziert, aber nicht autorisiert; IDOR-Tests prüfen ob 403 wirklich erzwungen wird |
| 404 | Not Found | Ressource nicht gefunden; bei Endpoint-Enumeration sagt 404 vs. 403 viel aus |
| 500 | Internal Server Error | Serverfehler; kann auf Injection-Erfolg oder unerwarteten Input hindeuten - wichtiger Fuzzing-Indikator |
Authentifizierung vs. Autorisierung & Login-Flows
Zwei Begriffe, die häufig verwechselt werden, aber grundverschiedene Konzepte sind:
- Authentifizierung (AuthN): Wer bist du? - Pruefe die Identität (Passwort, Token, Zertifikat)
- Autorisierung (AuthZ): Was darfst du? - Pruefe die Berechtigung nach erfolgreicher Identifikation
Typischer Login-Ablauf mit Session-Cookie:
- Nutzer sendet POST-Request mit Benutzername und Passwort
- Server prüft Credentials gegen Datenbank (Passwort-Hash)
- Bei Erfolg: Server erzeugt Session-ID, speichert sie serverseitig, sendet sie als Cookie an den Browser
- Browser sendet Cookie bei jedem weiteren Request automatisch mit
- Server prüft Session-ID, lädt zugehörige Nutzerdaten, entscheidet über Autorisierung
JWT (JSON Web Token) als Alternative: Statt einer Session-ID auf dem Server wird ein signiertes Token an den Client gegeben, das alle relevanten Informationen enthält. Vorteil: Server muss keinen Zustand halten. Nachteil: Token-Invalidierung ist komplex; Implementierungsfehler (z.B. schwache Signaturen, fehlende Prüfung des alg-Headers) können kritisch sein.
Formulare, APIs und JSON
Moderne Webanwendungen kommunizieren meist über REST-APIs. Statt HTML-Formulare direkt an den Server zu senden, schickt JavaScript Daten als JSON per fetch()-API - und verarbeitet die JSON-Antwort, ohne die Seite neu zu laden.
REST-Grundidee: Ressourcen (z.B. /api/users/42) werden per HTTP-Methoden manipuliert: GET zum Lesen, POST zum Erstellen, PATCH zum Ändern, DELETE zum Löschen. Jede URL repraesentiert eine Ressource.
Input-Validierung: Jeder Wert, der vom Nutzer kommt - Formularfelder, URL-Parameter, JSON-Body-Felder - muss serverseitig validiert werden. Client- seitige Validierung (z.B. per HTML-required) ist kein Schutz, sondern nur UX. Ein Angreifer mit Burp Suite umgeht sie trivial.
Output-Encoding: Bevor Nutzerdaten in HTML ausgegeben werden, müssen Sonderzeichen kodiert werden (z.B. < wird zu <). Das ist der primaere Schutz gegen XSS. Beim Ausgeben in JSON-Kontexte, SQL-Queries oder Shell-Kommandos gelten andere Encoding-Regeln.
Begriffs-Tabelle für Web-Security-Einsteiger
Diese Begriffe begegnen dir in jedem Web-Security-Kontext. Wer sie verinnerlicht hat, liest Writeups, CVEs und Lab-Aufgaben viel schneller.
| Begriff | Bedeutung | Beispiel |
|---|---|---|
| Request | Anfrage vom Client an den Server | Browser lädt eine Seite; Burp Suite sendet einen modifizierten POST |
| Response | Antwort des Servers auf einen Request | 200 OK mit HTML-Body; 401 Unauthorized |
| Header | Metadaten in Request oder Response | Authorization: Bearer token123 |
| Cookie | Kleines Datenstück, das der Browser automatisch mitsendet | session_id=abc123 |
| Session | Serverseitig gespeicherter Nutzerzustand | Nach Login wird Session-ID im Cookie gespeichert |
| API | Schnittstelle für maschinelle Kommunikation | GET /api/users/42 liefert JSON |
| Statuscode | Dreistelliger Code im Response | 403 bedeutet: authentifiziert, aber nicht berechtigt |
| Origin / CORS | Herkunft einer Anfrage (Schema + Host + Port) | https://example.com ist eine Origin; CORS erlaubt Cross-Origin-Zugriffe per Header |
Verbindung zu Burp Suite, PortSwigger Academy und Web-Security-Labs
Alles, was in diesem Guide erklärt wurde, wird in der Praxis mit Burp Suite sichtbar gemacht. Burp Suite Community Edition ist kostenlos und funktioniert als HTTP-Proxy: Jeder Request und Response läuft durch Burp, wird angezeigt und kann manipuliert werden.
- Burp Proxy zeigt alle HTTP-Requests in Echtzeit - Header, Body, Cookies sichtbar
- Repeater erlaubt das Wiederholen und Modifizieren einzelner Requests
- Intruder automatisiert Fuzzing und Brute-Force in eigenen legalen Labs
- PortSwigger Web Security Academy bietet kostenlose Labs zu allen großen Schwachstellenklassen
- Jedes Lab in der Academy setzt genau das Wissen aus diesem Guide voraus
Die PortSwigger Academy (portswigger.net/web-security) ist der empfohlene Einstiegspunkt. Die Labs sind nach Schwierigkeit gestaffelt, die Erklärungen sind detailliert und auf dem Stand der Technik. Wer hier methodisch vorgeht, erreicht in wenigen Wochen ein solides Web-Security-Fundament.
Typische Missverständnisse von Einsteigern
Diese Denkfehler kosten Zeit und führen zu blinden Flecken - fruehzeitig ausräumen spart spätere Frustration.
| Fehler | Warum problematisch | Besserer Ansatz |
|---|---|---|
| "HTTPS bedeutet sicher" | HTTPS verschlüsselt nur den Transport, nicht die Applikationslogik | HTTPS + sichere Applikation + korrekte Header = Schutz |
| "POST-Daten sind unsichtbar" | POST-Body ist in Burp Suite sofort lesbar und aenderbar | Alle Nutzerdaten serverseitig validieren, unabhaengig von der HTTP-Methode |
| "Client-seitige Validierung reicht" | JavaScript lässt sich umgehen; Burp Suite sendet beliebige Daten direkt | Immer serverseitige Validierung als einzige verlassliche Schicht |
| "401 und 403 sind dasselbe" | 401 = nicht eingeloggt; 403 = eingeloggt aber keine Berechtigung - unterschiedliche Angriffsvektoren | Statuscodes korrekt lesen und gezielt auf IDOR (403 umgehen) testen |
| "Cookies sind privat" | Ohne HttpOnly kann XSS Cookies lesen; ohne Secure werden sie im Klartext übertragen | HttpOnly, Secure, SameSite konsequent setzen |
| "Testen auf fremden Seiten ist ok zum Lernen" | Unbefugtes Testen ist strafbar - auch wenn keine Schaeden entstehen | Nur legale Labs: Juice Shop, DVWA, PortSwigger Academy, TryHackMe |
| "SameSite=Lax verhindert alle CSRF-Angriffe" | Lax hat Ausnahmen; ältere Browser unterstützen es nicht; Strict ist sicherer | SameSite=Strict kombiniert mit CSRF-Token für sensible Endpunkte |
Lernziele
Nach dieser Seite solltest du verstehen
- ✓Wie der vollständige Lebenszyklus eines HTTP-Requests abläuft
- ✓Was HTTP-Methoden, Header und Statuscodes bedeuten und wie man sie liest
- ✓Welche Schicht HTML, CSS und JavaScript jeweils abdecken und warum JavaScript sicherheitskritisch ist
- ✓Wie Cookies und Sessions funktionieren und welche Flags sie schützen
- ✓Den Unterschied zwischen Authentifizierung und Autorisierung
- ✓Was REST-APIs sind und warum Input-Validierung serverseitig sein muss
- ✓Wozu Burp Suite und die PortSwigger Academy dienen und wie sie sich auf dieses Wissen stützen
- ✓Welche Denkfehler Einsteiger typisch machen - und wie man sie vermeidet
Praxisbezug
Richte OWASP Juice Shop oder DVWA lokal per Docker ein. Öffne danach die Browser-DevTools (F12) und wechsle zum Netzwerk-Tab. Navigiere durch die Anwendung und beobachte jeden Request: Welche Methode? Welche Header? Welcher Statuscode? Was steht im Cookie? Danach installiere Burp Suite Community Edition als Proxy - jetzt siehst du dieselben Requests nochmals, kannst sie pausieren, verändern und wiederholen. Alles im eigenen Lab, völlig legal.
Legal-Hinweis
Alle Übungen gehören in legale Umgebungen wie Juice Shop, DVWA oder die PortSwigger Web Security Academy. Das Testen, Manipulieren oder Beobachten von Requests an fremden Systemen ohne ausdrückliche schriftliche Erlaubnis ist strafbar - auch wenn kein Schaden entsteht. Bug-Bounty-Programme definieren ihren Scope schriftlich; halte dich strikt daran.
Nächste Lernschritte
FAQ
Muss ich HTML, CSS und JavaScript erst richtig lernen, bevor ich Web Security angehe?
+
Nicht auf Entwickler-Niveau. Du brauchst ein Lese-Verständnis: Was macht ein HTML-Formular? Was passiert, wenn JavaScript im Browser ausgeführt wird? Wie baut eine Seite ihren DOM auf? Das reicht für den Einstieg. Frameworks wie React oder Vue brauchst du für Web Security nicht zwingend.
Brauche ich JS-Framework-Kenntnisse für Web Security?
+
Nein. Vanilla-JavaScript-Lese-Verständnis genügt. Wichtiger ist zu wissen, wie der Browser Code ausführt, was das DOM ist und wie Daten per fetch() oder XMLHttpRequest an einen Server gehen. Framework-Kenntnisse sind ein Bonus, kein Pflichtprogramm.
Was sind die wichtigsten HTTP-Header für Security?
+
Auf der defensiven Seite: Content-Security-Policy (XSS-Schutz), Strict-Transport-Security (erzwingt HTTPS), X-Frame-Options (Clickjacking), X-Content-Type-Options (MIME-Sniffing), Referrer-Policy und Permissions-Policy. Im Request sind Authorization, Cookie und Origin sicherheitsrelevant. Burp Suite zeigt alle Header eines Requests auf einen Blick.
Was ist CORS einfach erklärt?
+
CORS steht für Cross-Origin Resource Sharing. Standardmäßig darf JavaScript im Browser nur Ressourcen von derselben Origin (gleiches Schema, Host, Port) abrufen - das nennt sich Same-Origin Policy. CORS ist ein Mechanismus, mit dem Server per Header (Access-Control-Allow-Origin) explizit Ausnahmen erlauben. Falsch konfiguriertes CORS kann Angriffsvektoren eröffnen.
Wie hängt das alles mit Burp Suite zusammen?
+
Burp Suite sitzt als Proxy zwischen deinem Browser und dem Server. Jeder Request, jeder Response - mit allen Headern, Cookies und Body-Daten - wird abgefangen und angezeigt. Wer HTTP versteht, kann in Burp gezielt Requests manipulieren, wiederholen und auf Schwachstellen testen. Ohne HTTP-Grundlagen ist Burp ein Black Box.
Wo kann ich Web Security legal üben?
+
PortSwigger Web Security Academy (portswigger.net/web-security) ist kostenlos und didaktisch hervorragend. OWASP Juice Shop läuft lokal per Docker und bietet absichtlich verwundbare Szenarien. DVWA (Damn Vulnerable Web App) ist ähnlich. TryHackMe und HackTheBox haben dedizierte Web-Pfade. Niemals an fremden Live-Systemen ohne schriftliche Erlaubnis.