Ratgeber Konto erstellen 🇬🇧 🇩🇪
  • Ratgeber
  • Konto erstellen
  • Anmelden
  • 🇬🇧 🇩🇪
  • Server-Rezept

    Security-Header in TYPO3

    TYPO3 kann jeden Header selbst senden, mit einem Konfigurationsarray und ohne Extension. Was es nicht kann: die Dateien abdecken, die Ihr Webserver ausliefert, ohne TYPO3 je zu fragen.

    Meine Header prüfen Alle Security-Header

    01 Wohin es gehört

    Das Frontend-Header-Array, kein TypoScript-Nachgedanke

    TYPO3 sendet die Header aus der FE-Header-Konfiguration mit jeder Frontend-Antwort. Das Array gehört in config/system/additional.php, die nach der generierten settings.php gelesen wird und, anders als diese, nicht überschrieben wird, wenn jemand im Install-Tool speichert.

    Die Grenze steckt im Namen: FE heißt Frontend. Dateien unter fileadmin und die kompilierten Assets liefert Apache oder nginx aus, ohne dass TYPO3 überhaupt läuft, sie bekommen also keinen dieser Header. Gehört Ihnen der Webserver, setzen Sie sie dort und lassen dieses Array weg; gehört er Ihnen nicht, behalten Sie das Array und wissen, dass Ihre Bilder und Stylesheets blank rausgehen.

    02 Das Rezept

    Das hier in config/system/additional.php kopieren

    Ein sicherer Ausgangspunkt für ein Frontend, das seine eigenen Dateien lädt. X-Frame-Options steht bewusst auf SAMEORIGIN statt DENY: das Backend zeigt die Seitenvorschau in einem iframe auf demselben Ursprung, und mit DENY sehen Ihre Redakteure einen leeren Kasten.

    <?php $GLOBALS['TYPO3_CONF_VARS']['FE']['headers'] = [     'Strict-Transport-Security' => 'max-age=63072000; includeSubDomains',
        'Content-Security-Policy' => "default-src 'self'; object-src 'none'; base-uri 'self'; form-action 'self'; frame-ancestors 'self'",
        'X-Frame-Options' => 'SAMEORIGIN',
        'X-Content-Type-Options' => 'nosniff',
        'Referrer-Policy' => 'strict-origin-when-cross-origin',
        'Permissions-Policy' => 'geolocation=(), camera=(), microphone=(), payment=(), usb=()', ];

    Zwei Anpassungen, bevor das Ihres ist. Die Content-Security-Policy erlaubt nichts von Dritten und blockiert eingebundene Karten, Schriften, Analyse und die meisten Extensions, die irgendetwas Externes laden; fangen Sie deshalb mit Content-Security-Policy-Report-Only an. Und das Backend ist eine eigene Frage: TYPO3 12 und neuer bringen eine eigene Backend-Richtlinie mit, konfiguriert in Configuration/ContentSecurityPolicies.php, die dieses Array nicht anfasst.

    03 Zeile für Zeile

    Was jeder Eintrag macht

    Jeder Eintrag aus dem Block oben einzeln, damit Sie weglassen können, was nicht zu Ihrer Seite passt, statt etwas einzufügen, das Sie nicht erklären können.

    Strict-Transport-Security

    Was er macht. Legt Browser darauf fest, Ihre Seite zwei Jahre lang nur über HTTPS zu erreichen. Setzen Sie ihn am Webserver, wenn Sie können, dann gilt er auch für Anfragen, die TYPO3 nie erreichen, und fügen Sie ihn erst hinzu, wenn HTTPS auf jeder Subdomain funktioniert.

    'Strict-Transport-Security' => 'max-age=63072000; includeSubDomains',
    Zum ausführlichen Ratgeber

    Content-Security-Policy

    Was er macht. Fangen Sie hiermit an und nicht mit der erzwingenden Fassung. Report-Only ändert für Besucher nichts, sagt Ihnen aber, was eine strenge Richtlinie blockiert hätte, und das ist auf einer TYPO3-Seite mit einer Handvoll Extensions üblicherweise mehr als erwartet.

    'Content-Security-Policy' => "default-src 'self'; object-src 'none'; base-uri 'self'; form-action 'self'; frame-ancestors 'self'",
    'Content-Security-Policy-Report-Only' => "default-src 'self'; object-src 'none'; base-uri 'self'; form-action 'self'; frame-ancestors 'self'; report-uri /csp-report",
    Zum ausführlichen Ratgeber

    X-Frame-Options

    Was er macht. SAMEORIGIN statt DENY, weil die Seitenvorschau im Backend das Frontend in einem iframe lädt. DENY zerlegt sie, und Ihre Redakteure melden das als ausgefallene Website.

    'X-Frame-Options' => 'SAMEORIGIN',
    Zum ausführlichen Ratgeber

    X-Content-Type-Options

    Was er macht. Sagt dem Browser, Ihren angegebenen Inhaltstypen zu vertrauen, statt zu raten. Auf jeder Seite sicher, und auf einer, auf der Redakteure Dateien hochladen, nimmt er eine ganze Angriffsklasse aus dem Spiel.

    'X-Content-Type-Options' => 'nosniff',

    Referrer-Policy

    Was er macht. Sendet die vollständige Adresse innerhalb Ihrer eigenen Seite und nach außen nur die bloße Domain. Der Wert für nahezu jede öffentliche TYPO3-Seite.

    'Referrer-Policy' => 'strict-origin-when-cross-origin',
    Zum ausführlichen Ratgeber

    Permissions-Policy

    Was er macht. Schaltet Kamera, Mikrofon, Standort, Bezahlfunktion und USB-Zugriff für Ihre Seiten und alles Eingebettete ab. Erweitern Sie die Liste, statt sie zu kürzen: Funktionen, die Sie nicht nennen, bleiben verfügbar, auch für das, was eine Extension einbettet.

    'Permissions-Policy' => 'geolocation=(), camera=(), microphone=(), payment=(), usb=()',
    Zum ausführlichen Ratgeber

    04 Nachprüfen

    Erst den Cache leeren, dann die Antwort lesen

    Die Header werden je Antwort gesetzt und nicht mit der gecachten Seite gespeichert, ein TYPO3-Cache-Flush ist also nicht zwingend. Ein Reverse Proxy vor TYPO3 ist eine andere Sache: er legt Header zusammen mit dem Inhalt ab und liefert weiter die Antwort aus, die er vor Ihrem Array eingefangen hat.

    vendor/bin/typo3 cache:flush curl -sI https://example.com | grep -i "^strict-transport\|^content-security\|^x-frame" curl -sI https://example.com/fileadmin/logo.png | grep -i "^x-content-type"

    Prüfen Sie eine Datei unter fileadmin und nicht nur eine Seite. Steht der Header auf der Seite und fehlt an der Datei, ist das die Frontend-Grenze von oben und kein Fehler in Ihrer Konfiguration.

    Header im kostenlosen Scan prüfen

    05 Fragen

    Was zu TYPO3-Headern gefragt wird

    Soll ich stattdessen die TypoScript-Einstellung additionalHeaders nehmen?

    Sie funktioniert, und auf einer älteren Installation haben Sie vermutlich genau das schon. Das FE-Header-Array gilt für jede Frontend-Antwort einschließlich der Fehlerseiten, steht in einer Datei statt in jedem TypoScript-Template und hängt nicht daran, dass ein Template überhaupt geladen ist. Sind beide gesetzt, kann der Header zweimal rausgehen.

    Mein Backend war nach der Content-Security-Policy kaputt. Warum?

    Sollte es nicht sein, denn dieses Array gilt nur im Frontend. Ist das Backend wirklich betroffen, kommt der Header von Ihrem Webserver und nicht von TYPO3, und dort gehört die Behebung hin: den Backend-Pfad ausnehmen oder ihm eine eigene Richtlinie geben.

    Funktioniert das in TYPO3 11?

    Ja, die Frontend-Header-Konfiguration gibt es seit Version 10. Geändert hat sich später die Backend-Seite: die eigene Content Security Policy für das Backend kam mit Version 12, davor musste eine strenge Backend-Richtlinie vom Webserver kommen.

    Was ist mit Extensions, die eigene Header senden?

    Die können das, meist über eine PSR-15-Middleware, und dann gehen zwei Werte für denselben Header raus. Suchen Sie Ihre Extensions nach header- und withHeader-Aufrufen ab, bevor Sie annehmen, dieses Array sei die einzige Quelle, und legen Sie je Header einen Eigentümer fest.

    06 Im Detail

    Die Header im Einzelnen

    Diese Seite ist die Konfiguration. Diese Ratgeber erklären, was jeder Header wirklich macht und wie Sie seinen Wert wählen.

    HTTP-Security-Header

    Was jeder Response-Header bewirkt, welche Ihre Website senden sollte und wie Sie sie richtig konfigurieren.

    Ratgeber lesen

    Content Security Policy

    Der stärkste Schutz gegen Cross-Site-Scripting: welche Direktiven Sie setzen, wie Sie eine Richtlinie im Report-Only-Modus einführen und wie Sie erzwingend werden, ohne Ihre Website zu zerlegen.

    Ratgeber lesen

    HSTS

    Strict-Transport-Security erklärt: was max-age, includeSubDomains und preload wirklich bewirken und warum die Preload-Liste eine Entscheidung ist, die Sie nicht schnell zurücknehmen können.

    Ratgeber lesen

    Cookie-Sicherheit

    Secure, HttpOnly und SameSite: die Cookie-Attribute, die eine Sitzung vor Skripten und fremden Seiten schützen, samt Einstellungen für einen typischen Stack.

    Ratgeber lesen

    Clickjacking und X-Frame-Options

    Wie eine unsichtbare Überlagerung aus einem Besucherklick eine Aktion auf Ihrer Website macht, und die zwei Header, die das verhindern: X-Frame-Options für ältere Clients, frame-ancestors für alles andere.

    Ratgeber lesen

    Referrer-Policy

    Welcher Teil Ihrer URLs an fremde Seiten geht, wenn ein Besucher weiterklickt: die fünf Werte, die zählen, was jeder davon preisgibt und welcher der sinnvolle Standard ist.

    Ratgeber lesen

    Permissions-Policy

    Kamera, Mikrofon, Standort und Bezahlfunktion für Ihre Website und alle eingebetteten Inhalte abschalten: die Syntax der Positivliste und warum eine nicht genannte Funktion keine abgeschaltete Funktion ist.

    Ratgeber lesen

    SPF, DMARC und DNSSEC

    Die Einträge, die verhindern, dass jemand in Ihrem Namen Mails verschickt, und der, der Ihre DNS-Antworten ehrlich hält: was jeder leistet und in welcher Reihenfolge Sie sie einführen.

    Ratgeber lesen

    security.txt

    Die Datei, die Sicherheitsforschern sagt, wohin eine Schwachstelle gemeldet wird. Zwei Pflichtfelder, zehn Minuten Arbeit, und der Unterschied zwischen einer privaten und einer öffentlichen Meldung.

    Ratgeber lesen

    Security-Header überwachen

    Ein Header, der heute stimmt, kann nach dem nächsten Deploy fehlen. Drei Wege, das zu bemerken: ein Cronjob mit curl, eine Prüfung in Ihrer CI-Pipeline und ein geplanter Scan, jeweils mit dem, was er findet und was nicht.

    Ratgeber lesen

    CSP-Änderungen erkennen

    Wie sich eine Richtlinie durch Deploys, Plugins und CDN-Regeln unbemerkt ändert und wie Sie es merken: ein Header-Diff, Verstoßmeldungen über report-to und was ein Scan-Vergleich zeigen kann und was nicht.

    Ratgeber lesen

    Weiterlesen

    Jeder Ratgeber steht für sich, zusammen decken sie ab, worauf unser Scanner schaut. Wählen Sie den, der Ihrer nächsten Frage am nächsten kommt.

    Ist Ihre Website betroffen? BFSG-Check Erklärung zur Barrierefreiheit BFSG für Onlineshops BFSG für Arztpraxen BFSG für Hotels BFSG für Handwerker HTTP-Security-Header Datenschutz-Signale Content Security Policy HSTS Cookie-Sicherheit Clickjacking und X-Frame-Options Referrer-Policy Permissions-Policy SPF, DMARC und DNSSEC security.txt Security-Header überwachen CSP-Änderungen erkennen Security-Header in nginx Security-Header in Apache Security-Header in WordPress Security-Header in IIS Security-Header in Shopware 6 Security-Header in Plesk Alle Ratgeber

    Sehen Sie, welche Header TYPO3 wirklich sendet

    Unser kostenloser Quickscan liest die Header aus Ihrer ausgelieferten Antwort und nicht aus Ihrer Konfigurationsdatei, und erklärt jeden Befund verständlich.

    Website scannen Letzte Scans
    Aktuelle Scans Ratgeber Ortsligen Preise Methodik Für Hoster API Datenschutz Impressum Barrierefreiheit AGB Verträge hier kündigen © 2026 Erseni