Cybersecurity5. Juni 202610 min read

HTTP-Security-Header 2026: Welche wirklich schützen und welche nur Ballast sind

Die meisten Websites liefern einen Stapel kopierter Header aus, die nichts bewirken, und lassen genau die zwei weg, die echte Angriffe stoppen. Hier die Rangliste für 2026, mit Konfigurationen, die den Produktivbetrieb überleben.

Von Innovation T Team


Ihre Anwendung kann ein sauberes Auth-System, gehashte Passwörter und einen makellosen Pentest-Bericht haben und trotzdem über ein einziges injiziertes Script-Tag übernommen werden. Security Header sind der browserseitige Vertrag, der den Schaden begrenzt, wenn doch etwas durchrutscht. Die meisten Teams lassen sie entweder ganz weg oder kopieren ein Snippet aus einem Blogartikel von 2018 und haken das Thema ab. Beides ist ein Fehler, und 2026 liegt genau in der Lücke zwischen "Header vorhanden" und "Header wirksam" der Ort, an dem echte Sicherheitsvorfälle entstehen.

Warum Header die günstigste Schutzmaßnahme in Ihrem Stack sind

Ein Security Header ist eine Zeile Serverkonfiguration, die den Browser jedes Besuchers zur Durchsetzungsinstanz macht. Kein Agent zu installieren, kein SDK, keine messbare Latenz. Der Browser weigert sich, das Skript des Angreifers zu laden, verweigert den Downgrade auf HTTP und lässt nicht zu, dass eine fremde Seite Ihren Checkout in einen Frame einbettet.

Der Haken: Header sind deklarative Policy, und eine Policy, die niemand testet, verrottet lautlos. Wir auditieren bei Innovation T regelmäßig Produktivsysteme, und dasselbe Muster wiederholt sich. Eine Content-Security-Policy mit unsafe-inline, die sich selbst neutralisiert. HSTS auf dem www-Host, aber nicht auf der Apex-Domain. Ein X-Frame-Options-Header, dreifach gesetzt von drei Infrastrukturschichten, mit widersprüchlichen Werten. Header sind Code. Behandeln Sie sie wie Code: versioniert, reviewt, in der CI getestet.

Hier also die Rangliste, mit der wir tatsächlich arbeiten, was jeder Header mechanisch bewirkt und wie Sie die schwierigen ausrollen, ohne den Produktivbetrieb zu gefährden.

Priorität 1: die zwei Header, die echte Angriffe stoppen

Strict-Transport-Security (HSTS)

HSTS schließt das Zeitfenster, in dem ein Nutzer yourapp.com eintippt und der Browser vor der Weiterleitung genau eine unverschlüsselte HTTP-Anfrage stellt. Genau in dieser ersten Anfrage sitzen SSL-Stripping-Proxys: Hotel-WLAN, das WLAN im Zug, Captive Portals, feindselige Netzbetreiber.

Strict-Transport-Security: max-age=31536000; includeSubDomains; preload

Die Mechanik: Sobald der Browser diesen Header über HTTPS gesehen hat, schreibt er für max-age Sekunden jede künftige HTTP-Anfrage an diese Origin intern auf HTTPS um, bevor irgendetwas das Netzwerk berührt. Mit preload können Sie die Domain in die Chromium-Preload-Liste eintragen lassen, dann greift der Schutz schon beim allerersten Besuch.

Der Kompromiss, den viele unterschätzen: includeSubDomains plus preload ist praktisch irreversibel. Jede Subdomain, die Sie jemals anlegen, muss für immer gültiges HTTPS ausliefern. Das interne Tool auf legacy.yourapp.com mit selbstsigniertem Zertifikat? Für jeden Browser mit dem Eintrag dauerhaft unerreichbar. Unsere Regel: eine Woche mit max-age=300 starten, dann 86400, dann ein volles Jahr, und die Preload-Aufnahme erst beantragen, wenn Sie jede Subdomain inventarisiert haben, auch die, die das Marketing ohne Rücksprache aufgesetzt hat.

Content-Security-Policy (CSP)

CSP ist der einzige Header, der Cross-Site-Scripting substanziell entschärft, und zugleich der, den die meisten Teams falsch konfigurieren. Eine Policy mit script-src 'unsafe-inline' oder einer langen CDN-Allowlist ist Sicherheitstheater: Allowlists werden routinemäßig über JSONP-Endpunkte und offene Redirects auf den erlaubten Domains ausgehebelt. Googles CSP Evaluator markiert solche Lücken in Sekunden. Prüfen Sie Ihre Policy damit, bevor Sie ihr vertrauen.

Was 2026 funktioniert, ist eine strikte CSP auf Basis von Nonces und strict-dynamic:

Content-Security-Policy:
  script-src 'nonce-{RANDOM}' 'strict-dynamic' https: 'unsafe-inline';
  object-src 'none';
  base-uri 'none';
  frame-ancestors 'self';

Die Mechanik: Jedes legitime <script>-Tag trägt eine pro Response erzeugte Nonce. strict-dynamic bedeutet "jedes Skript, das ein vertrauenswürdiges Skript nachlädt, ist ebenfalls vertrauenswürdig", und genau das macht Bundler, dynamische Imports und die meisten Tag-Manager überlebensfähig. Das nachgestellte https: und unsafe-inline werden von modernen Browsern ignoriert und existieren nur als Fallback für Uralt-Clients, damit die Policy dort offen ausfällt, statt die Seite zu zerlegen.

Zwei harte Anforderungen. Erstens muss die Nonce kryptografisch zufällig pro Response sein, was bedeutet, dass Ihr HTML nicht unverändert im CDN gecacht werden kann: Sie brauchen Nonce-Injektion an der Edge, Rendering pro Request oder für vollständig statische Seiten eine Hash-basierte Policy. Zweitens gehört frame-ancestors hierher: Die Direktive löst X-Frame-Options mit feinerer Kontrolle ab und ist die eigentliche Verteidigung gegen Clickjacking.

CSP ist außerdem Ihr Stolperdraht für die Lieferkette. Wenn ein kompromittiertes Drittanbieter-Skript Daten an eine neue Domain exfiltrieren will, verwandelt ein enges connect-src einen stillen Abfluss in einen Violation Report auf Ihrem Dashboard. Wenn Sie den Rest dieser Pipeline härten wollen: Unser Beitrag zum Aufbau einer DevSecOps-Pipeline zeigt, wo Header-Linting in der CI hingehört.

Priorität 2: hoher Nutzen, kaum Nebenwirkungen

Diese Header kosten Minuten und brechen praktisch nie etwas. Setzen Sie sie noch diese Woche.

X-Content-Type-Options

X-Content-Type-Options: nosniff

Verbietet dem Browser das Raten von MIME-Typen und beseitigt damit eine ganze Angriffsklasse, bei der ein hochgeladenes "Bild" als Skript interpretiert wird. Der Header ist außerdem Voraussetzung dafür, dass etliche moderne Browserschutzmechanismen überhaupt vollständig greifen. Es gibt keinen legitimen Grund, ihn wegzulassen.

Referrer-Policy

Referrer-Policy: strict-origin-when-cross-origin

Browser setzen das inzwischen als Default, aber konfigurieren Sie es explizit, damit ein Proxy oder ein älterer Client Sie nicht zurückwirft. Das Schadensbild, das dieser Header verhindert, ist hässlich: vollständige URLs, teils mit Passwort-Reset-Tokens oder Session-Kennungen im Query-String, fließen an jede Drittanbieter-Domain ab, von der Sie Ressourcen laden. Aus DSGVO-Sicht ist das im Zweifel ein meldepflichtiger Datenschutzvorfall, kein Schönheitsfehler. Wenn Ihre URLs jemals sensible Tokens tragen, prüfen Sie no-referrer gezielt für diese Routen.

Permissions-Policy

Permissions-Policy: camera=(), microphone=(), geolocation=(), payment=(), browsing-topics=()

Deny-by-default für mächtige Browser-APIs. Der Punkt ist nicht, dass Ihr eigener Code plötzlich Kamerazugriff anfordert. Der Punkt ist, dass ein kompromittiertes Drittanbieter-Skript auf Ihrer Seite Ihre Berechtigungen erbt. Alles zu verbieten, was Sie nicht nutzen, macht aus "Angreifer im Werbe-Iframe aktiviert Sensoren" einen No-op. Bonus: browsing-topics=() nimmt Ihre Nutzer aus den interessenbasierten Tracking-APIs heraus. In einem Markt, in dem Datenschutz ein Kaufargument ist, ist das ein kleiner, aber echter Vertrauensgewinn.

Das Cross-Origin-Isolation-Trio: COOP, COEP, CORP

Cross-Origin-Opener-Policy: same-origin
Cross-Origin-Embedder-Policy: require-corp
Cross-Origin-Resource-Policy: same-site

Diese Header existieren wegen Angriffen der Spectre-Klasse: Alle Daten, die in Ihren Prozess geladen werden, kann Angreifercode im selben Prozess potenziell auslesen. COOP kappt die Fensterreferenz zwischen Ihrer Seite und Seiten, die sie öffnen, was nebenbei eine Klasse von Tab-Nabbing-Angriffen erledigt. COEP verlangt, dass jede eingebettete Ressource dem Einbetten explizit zustimmt. CORP ist genau dieses Zustimmungssignal für Ihre eigenen Ressourcen.

Der ehrliche Kompromiss: COEP mit require-corp bricht Drittanbieter-Bilder, Iframes und Widgets, die keine CORP-Header senden, und das Debugging ist mühsam. Wer Zahlungsdaten oder Gesundheitsdaten verarbeitet oder SharedArrayBuffer benötigt, sollte die Arbeit investieren. Für eine Content-Site ist COOP: same-origin allein ein vernünftiger Endpunkt.

Diese Header gehören 2026 gelöscht

Alte Snippets schleppen toten Ballast mit, und ein Teil davon schadet aktiv:

  • X-XSS-Protection: Der Filter, den dieser Header steuerte, wurde vor Jahren aus allen großen Browsern entfernt, und in alten Browsern ermöglichte der Filter selbst Informationslecks. Setzen Sie nichts, oder 0, wenn ein Scanner nörgelt.
  • Expect-CT: obsolet. Certificate Transparency ist in Browsern seit Jahren verpflichtend.
  • X-Frame-Options: abgelöst durch frame-ancestors. Behalten Sie ihn nur, wenn Sie wirklich prähistorische Clients unterstützen müssen, und stellen Sie sicher, dass er Ihrer CSP nicht widerspricht.
  • X-Powered-By und gesprächige Server-Werte: keine Security Header, aber entfernen Sie sie trotzdem. Kostenlose Aufklärung für Angreifer, null Nutzen für Sie.

CSP ausrollen, ohne den Produktivbetrieb zu zerlegen

Das ist der Teil, den jeder Leitfaden überspringt. Hier die Sequenz, die wir in Kundenprojekten fahren:

  1. Erst die Realität inventarisieren. Deployen Sie Content-Security-Policy-Report-Only mit Ihrer strikten Ziel-Policy und einem Reporting-Endpunkt. Noch blockiert nichts; Sie sammeln nur Violations aus echtem Traffic, inklusive der Marketing-Pixel, die niemand dokumentiert hat.
  2. Reporting sauber verdrahten. Nutzen Sie den modernen Reporting-Endpoints-Header und zeigen Sie mit report-to darauf. Violation Reports enthalten URLs und Client-Informationen, also potenziell personenbezogene Daten: Ein selbst gehosteter Collector auf eigener Infrastruktur in der EU erspart Ihnen die AVV-Diskussion mit einem weiteren Dienstleister. So oder so gehören die Reports in dasselbe Alerting wie der Rest Ihrer Systeme.
  3. Zwei bis vier Wochen triagieren. Echte Violations clustern schnell: Browser-Extensions (Rauschen, ignorieren), Tag-Manager-Injektionen (mit Nonce-Propagation beheben), alte Inline-Handler wie onclick= (refactoren, das ist meist der Löwenanteil der Arbeit).
  4. Die Anwendung reparieren, nicht die Policy aufweichen. Jedes Mal, wenn Sie versucht sind, die Policy zu erweitern, fragen Sie, ob stattdessen der Code geändert gehört. Ein "vorübergehend" ergänztes unsafe-inline ist dauerhaft. Wir haben noch nie erlebt, dass es später wieder entfernt wurde.
  5. Zuerst auf einer risikoarmen Route erzwingen. Schalten Sie Report-Only auf Ihren Marketing-Seiten oder einem internen Tool auf Enforcing um. Beobachten Sie Fehlerraten und Reports eine Woche lang.
  6. Überall erzwingen, Report-Only weiterlaufen lassen. Fahren Sie beide Header parallel: die erzwingende Policy als Untergrenze, eine striktere Report-Only-Kandidatin als nächste Iteration. So ziehen Sie die Schraube über die Zeit fester, ohne zu spielen.
  7. Einen Regressionstest ergänzen. Ein CI-Schritt, der zentrale Routen abruft und die Header prüft, ist in einer Stunde geschrieben. Er erspart Ihnen den Vorfall um 2 Uhr nachts, bei dem eine CDN-Migration stillschweigend jeden Header verworfen hat, den Sie je ausgeliefert haben.

Dieser letzte Schritt wiegt schwerer als jeder einzelne Header. Nach unserer Erfahrung passieren Header-Regressionen an Infrastrukturgrenzen: ein neuer Reverse Proxy, ein CDN-Wechsel, eine Plattformmigration. Monatelang merkt es niemand, weil nichts sichtbar bricht. Verifikation gehört in die Pipeline, nicht in das Gedächtnis einzelner Personen. Es ist dasselbe Argument, das wir bei der API-Sicherheit machen: Kontrollen, die Sie nicht kontinuierlich verifizieren, existieren nicht.

Wo Sie Header setzen und wie Sie sie verifizieren

Setzen Sie Header an der äußersten Schicht, die Sie kontrollieren, und zwar genau einmal. Widersprüchliche Werte aus mehreren Schichten erzeugen wirklich merkwürdiges Browserverhalten, und bei CSP kombinieren sich mehrere Header per Schnittmenge, was meist "der strengste gewinnt" bedeutet, auf Arten, die niemand beabsichtigt hat.

Für eine nginx-Edge:

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;

Das always-Flag ist entscheidend: Ohne es lässt nginx Ihre Header bei 404- und 500-Antworten weg, also genau bei den Responses, die Angreifer abklopfen. CSP mit Nonces kann nicht in statischer Konfiguration leben; erzeugen Sie sie pro Request in der Anwendung oder im Edge-Worker.

Werkzeuge, die ihren Platz verdienen: Mozilla Observatory und securityheaders.com für die Außensicht, Googles CSP Evaluator für die Policy-Qualität und eine curl-Schleife in der CI gegen Regressionen. Die Jagd nach Bestnoten hat allerdings einen bekannten Fehlermodus: Ein A+ mit einer sich selbst neutralisierenden CSP ist schlechter als ein B mit einer echten, weil es falsche Sicherheit produziert. Scanner prüfen Präsenz, nicht Korrektheit. Genau diese Lücke soll ein richtiger Penetrationstest aufdecken.

Eine Entscheidungshilfe nach Anwendungstyp

  • Statische Marketing-Site: HSTS, nosniff, Referrer-Policy, Permissions-Policy, Hash-basierte CSP mit frame-ancestors. Ein halber Tag Arbeit, Risiko nahe null.
  • SaaS-Dashboard: alles oben Genannte plus Nonce-basierte strikte CSP mit Reporting sowie COOP. Kalkulieren Sie drei bis sechs Wochen Kalenderzeit für den CSP-Rollout, überwiegend Warten auf Report-Only-Daten.
  • Fintech, Gesundheit, alles Regulierte: das volle Set inklusive COEP/CORP-Isolation, enges connect-src und Header-Assertions in der CI als Release-Gate. Die Header werden Teil Ihrer Nachweisführung, ob für die Rechenschaftspflicht nach Art. 32 DSGVO, ein ISO-27001-Audit oder Fragenkataloge Ihrer Kunden.
  • Embedded-Widget-Produkt: Sie sitzen auf der anderen Seite des Tisches. Liefern Sie korrekte CORP-Header aus, entwerfen Sie für die CSP-Policies Ihrer Kunden und dokumentieren Sie exakt, welche Direktiven Integratoren brauchen.

Die Meta-Regel: Header erzwingen eine Grenze, und Sie sollten wissen, welche Grenze jeder einzelne bewacht. Wenn niemand im Team erklären kann, warum ein Header gesetzt ist, ist er entweder toter Ballast oder ein schlafender Ausfall.

Wie Innovation T unterstützen kann

Innovation T baut und härtet Webplattformen für Kunden in Europa und Nordafrika: strikte CSP-Rollouts auf laufenden Produkten, Cross-Origin-Isolation für hochsensible Anwendungen und CI-Pipelines, die Security Header als getesteten Code behandeln. Die Report-Only-Triage haben wir oft genug durchgezogen, um aus Wochen von Rätselraten einen planbaren Prozess zu machen.

Wenn Ihr letztes Header-Review ein kopiertes Snippet war: Sehen Sie, was unsere Engineering- und Security-Leistungen abdecken oder sprechen Sie mit uns über ein Audit. Der erste Durchgang dauert in der Regel Tage, nicht Monate, und ist die günstigste Reduktion Ihrer Angriffsfläche in diesem Jahr.

#Security Header#CSP#HSTS#Websicherheit

Bereit, mit Innovation T zu bauen?

Ob Sicherheit, Wachstum oder Engineering, unser Team hilft Ihnen, es gut umzusetzen.