hackatoll
Zur Lernplattform

Wissen › HTTP, Requests & DevTools

HTTP, Requests & DevTools

Wie Browser und Server miteinander sprechen – und wie du jede Anfrage mit den Entwickler-Werkzeugen deines Browsers sichtbar machst.

Grundlagen
Trainings-Lektion · Web-Security Grundlagen Anmeldung nötig

Lies den Artikel und beantworte am Ende 9 Fragen. Erst wenn alle richtig beantwortet sind, ist die Lektion im Training erledigt.

Zu den Fragen ↓

Jede Webseite, jedes Formular und jeder Login ist am Ende ein Gespräch zwischen Browser und Server – geführt in HTTP-Nachrichten. Wer Web-Sicherheit verstehen will, muss diese Nachrichten lesen können. Die gute Nachricht: Dein Browser zeigt sie dir, mit den Entwickler-Werkzeugen (DevTools).

Anfrage und Antwort

HTTP ist ein textbasiertes Protokoll mit einem einfachen Muster: Der Browser schickt eine Anfrage (Request), der Server antwortet (Response). Jede Nachricht besteht aus einer Startzeile, mehreren Kopfzeilen (Headern) und optional einem Inhalt (Body).

So sieht eine einfache Suche aus – oben die Anfrage, unten die Antwort:

GET /suche?q=manta HTTP/1.1
Host: www.example.org
Cookie: session=3f1c9a…
User-Agent: Mozilla/5.0 …

HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Set-Cookie: session=3f1c9a…; Secure; HttpOnly; SameSite=Lax

<!doctype html> …

Methoden: Was soll passieren?

MethodeZweckWorauf achten
GETDaten abrufen – Seiten, Bilder, SuchergebnisseParameter stehen in der URL und landen in Server-Logs, Browser-Verlauf und Referer. Ein GET sollte nie etwas verändern.
POSTDaten senden – Formulare, Logins, UploadsParameter stehen im Body. Zustandsändernde Aktionen brauchen einen Schutz gegen CSRF.
PUT, PATCH, DELETERessourcen anlegen, ändern oder löschen – typisch für APIsJede Methode braucht eine eigene Berechtigungsprüfung.
HEAD, OPTIONSNur Kopfzeilen abrufen bzw. erlaubte Methoden erfragen (u. a. für CORS)Verraten manchmal mehr über den Server, als nötig wäre.

Statuscodes: Was ist passiert?

BereichBedeutungBeispiele
2xxErfolg200 OK, 201 Created, 204 No Content
3xxUmleitung – das Ziel steht im Header Location301 dauerhaft, 302/303 vorübergehend (z. B. nach einem Login)
4xxFehler auf Seite des Clients400 ungültig, 401 nicht angemeldet, 403 verboten, 404 nicht gefunden, 429 zu viele Anfragen
5xxFehler auf Seite des Servers500 interner Fehler, 502/503 Server nicht erreichbar

Für Angreifer sind schon Unterschiede in den Antworten eine Information: Liefert ein Login bei unbekannten Nutzern eine andere Meldung als bei einem falschen Passwort, lässt sich herausfinden, welche Konten existieren.

Header, die du kennen solltest

Cookies und Sitzungen

HTTP ist zustandslos: Jede Anfrage steht für sich. Damit ein Server weiß, dass du angemeldet bist, gibt er dir nach dem Login ein Cookie mit einer zufälligen Sitzungs-ID. Bei jeder weiteren Anfrage schickt der Browser es automatisch mit. Daraus folgt: Wer dieses Cookie besitzt, ist für den Server du.

Darum sind die Attribute eines Sitzungs-Cookies so wichtig:

HTTPS – verschlüsselt, aber nicht automatisch sicher

HTTPS verschlüsselt den Transport mit TLS: Niemand im WLAN oder beim Provider kann mitlesen oder Inhalte unbemerkt verändern. Der Header Strict-Transport-Security (HSTS) sorgt dafür, dass der Browser die Seite künftig nur noch verschlüsselt aufruft.

Wichtig: HTTPS schützt den Weg, nicht die Anwendung. Eine SQL-Injection funktioniert über HTTPS genauso gut.

Die DevTools: dein Röntgenblick

Alle gängigen Browser bringen Entwickler-Werkzeuge mit. Öffnen mit F12 bzw. Strg+Umschalt+I – auf dem Mac mit Cmd+Option+I.

  1. 1
    Netzwerk (Network)

    Zeigt jede Anfrage der Seite. Ein Klick darauf öffnet Header, gesendete Daten (Payload), Antwort und Cookies. Aktiviere „Log beibehalten“ (Preserve log), damit Umleitungen nach einem Formular-Absenden sichtbar bleiben.

  2. 2
    Anfrage nachbauen

    Rechtsklick auf eine Anfrage → „Als cURL kopieren“ (Copy as cURL). Im Terminal lässt sie sich dann beliebig verändern und erneut senden. Firefox kann Anfragen direkt im Browser bearbeiten und erneut senden.

  3. 3
    Speicher (Application/Storage)

    Hier siehst du Cookies samt Attributen sowie Local und Session Storage – und kannst sie zum Testen ändern oder löschen.

  4. 4
    Elemente (Elements/Inspector)

    Zeigt das HTML so, wie es gerade im Browser ist. Versteckte Formularfelder, deaktivierte Buttons oder eine maximale Eingabelänge lassen sich hier mit zwei Klicks ändern.

  5. 5
    Konsole (Console)

    Fehlermeldungen von Skripten und eine JavaScript-Eingabe. Praktisch, um zu prüfen, was eine Seite im Browser preisgibt.

Die wichtigste Lektion: Der Browser gehört dem Nutzer

Alles, was im Browser passiert, kann verändert werden: versteckte Felder, JavaScript-Prüfungen, ausgegraute Buttons, Preise oder IDs in der URL. Eine Anfrage muss nicht einmal aus einem Browser kommen – ein Werkzeug wie curl reicht.

Deshalb gilt: Prüfungen im Browser sind Komfort, keine Sicherheit. Ob jemand etwas sehen oder tun darf und ob eine Eingabe gültig ist, muss der Server entscheiden – bei jeder einzelnen Anfrage.

# Dieselbe Formular-Anfrage – ohne Browser, mit veränderten Werten
curl -X POST https://www.example.org/bestellung \
  -H 'Cookie: session=3f1c9a…' \
  -d 'artikel=42&menge=1&preis=0'
Trainings-Lektion abschließen

Lektion abschließen: 9 Fragen beantworten

Anmeldung nötig

Diese Lektion („HTTP, Requests & DevTools“) gilt im Training erst als erledigt, wenn du alle 9 Fragen zu diesem Artikel richtig beantwortet hast – von leicht bis knifflig. Dafür brauchst du ein Konto, damit dein Fortschritt gespeichert wird.

Anmelden & Fragen beantworten

◆ In TYPO3 beachten

Worauf du in TYPO3 achten musst

TYPO3 bringt für die wichtigsten HTTP-Themen eigene Einstellungen mit. Sie lohnen einen Blick in jedem Projekt.

trustedHostsPattern: dem Host-Header nicht blind trauen

Der Host-Header kommt vom Client. TYPO3 nutzt den Hostnamen unter anderem, um absolute Links zu erzeugen – etwa in Mails zum Zurücksetzen von Passwörtern. Die Einstellung legt fest, welche Hostnamen gültig sind. Standard ist SERVER_NAME (Abgleich mit der Webserver-Konfiguration). Das Muster .* schaltet die Prüfung ab und gilt als unsicher.

// config/system/additional.php (TYPO3 v12+)
$GLOBALS['TYPO3_CONF_VARS']['SYS']['trustedHostsPattern'] = '(www\\.)?example\\.org';

Sitzungs-Cookies und SameSite

TYPO3 verwaltet Sitzungen über eigene Cookies für Frontend und Backend. Das SameSite-Verhalten lässt sich getrennt einstellen ($GLOBALS['TYPO3_CONF_VARS']['FE']['cookieSameSite'] und ['BE']['cookieSameSite'] mit strict, lax oder none). Standard ist lax im Frontend und strict im Backend – none nur, wenn es wirklich nötig ist.

Content-Security-Policy

Seit TYPO3 12.3 gibt es eine eingebaute CSP-API für Frontend und Backend. Im Backend ist die Policy seit TYPO3 13 immer aktiv. Im Frontend musst du sie bewusst einschalten – über das Feature-Flag security.frontend.enforceContentSecurityPolicy oder eine csp.yaml je Site.

Weiter im Wissen

Interaktiv üben

In der Lernplattform probierst du das an einer echten, isolierten TYPO3-Instanz aus:

Quellen & weiterlesen

Jetzt interaktiv üben →