Security Header setzen: HSTS und CSP Schritt für Schritt

  • Datum: 02.10.2026
  • Autor: WOSA Intermedia

Deine Website läuft, die Seiten laden, die Kunden melden sich. Trotzdem fehlt bei vielen KMU ein Schutz, der in wenigen Minuten eingerichtet ist und eine ganze Reihe typischer Angriffe ausbremst: richtig gesetzte Security Header. Sie sind kleine Anweisungen, die dein Server bei jeder Antwort mitschickt und die dem Browser sagen, wie er mit deiner Seite umgehen soll. In dieser Anleitung zeigen wir dir Schritt für Schritt, wie du Security Header setzt, welche wirklich wichtig sind und wie du die Content Security Policy (CSP) sicher einführst, ohne deine Seite zu zerschiessen.

Du brauchst dafür keine tiefen Sicherheitskenntnisse. Du brauchst Zugriff auf die Konfiguration deines Webservers (Nginx oder Apache) oder deines Hostings, und etwa eine Stunde Zeit für einen sauberen Test.

Was sind Security Header und warum brauchst du sie?

Jede Antwort deines Webservers besteht aus zwei Teilen: dem eigentlichen Inhalt (HTML, Bilder, Skripte) und den HTTP-Headern, also Zusatzinformationen zur Antwort. Security Header sind Header, die das Sicherheitsverhalten des Browsers steuern. Der Browser setzt sie direkt beim Besucher durch. Das ist ihr grosser Vorteil: Du musst dafür keinen Code deiner Seite umschreiben.

Gerade für KMU lohnt sich das, weil viele Websites über Jahre gewachsen sind. Alte Skripte, eingebundene Drittanbieter, Kontaktformulare und Tracking-Tools bieten Angreifern Angriffsfläche. Wenn Security Header richtig gesetzt sind, hilft das zum Beispiel gegen:

  • Cross-Site-Scripting (XSS): Fremder Code wird in deine Seite eingeschleust und im Browser deiner Besucher ausgeführt.
  • Clickjacking: Deine Seite wird unsichtbar in eine fremde Seite eingebettet, damit Besucher unbewusst auf etwas klicken.
  • Downgrade-Angriffe: Ein Angreifer zwingt die Verbindung von HTTPS zurück auf unverschlüsseltes HTTP.
  • Datenabfluss über den Referrer: Vollständige URLs mit sensiblen Parametern landen bei fremden Seiten.

Security Header ersetzen keine Updates, keine sicheren Passwörter und keine saubere Programmierung. Sie sind eine zusätzliche Schutzschicht (Defense in Depth), die Schäden begrenzt, wenn doch einmal etwas durchrutscht.

Die wichtigsten Security Header im Überblick

Es gibt eine ganze Liste von Headern, aber für den Start reichen fünf. Diese Reihenfolge empfehlen wir, vom einfachen zum anspruchsvollen:

  • Strict-Transport-Security (HSTS): Der Browser spricht mit deiner Domain nur noch über HTTPS.
  • X-Content-Type-Options: Der Browser darf Dateitypen nicht «erraten», sondern hält sich an den deklarierten Typ.
  • Referrer-Policy: Du steuerst, wie viel von der Herkunfts-URL an andere Seiten weitergegeben wird.
  • Permissions-Policy: Du schaltest Browserfunktionen wie Kamera, Mikrofon oder Standort ab, die deine Seite nicht braucht.
  • Content-Security-Policy (CSP): Du legst fest, von wo Skripte, Bilder und andere Ressourcen geladen werden dürfen. Das ist der mächtigste, aber auch heikelste Header.

Schritt 1: Ausgangslage prüfen

Bevor du Security Header setzt, schau dir an, was dein Server aktuell sendet. Das geht am schnellsten im Terminal mit curl:

curl -sI https://www.deine-domain.ch | grep -i -E 'strict-transport|content-security|x-content-type|referrer-policy|permissions-policy'

Kommt nichts zurück, setzt dein Server noch keinen dieser Header. Alternativ kannst du kostenlose Online-Scanner nutzen, die deine Domain prüfen und eine Note vergeben. Notiere dir das Ergebnis, damit du den Fortschritt später vergleichen kannst.

Schritt 2: Security Header setzen, zuerst HSTS

Der Header Strict-Transport-Security sagt dem Browser, dass er deine Domain für eine bestimmte Zeit nur noch über HTTPS aufrufen soll. Laut der MDN Web Docs ist der Parameter max-age Pflicht, er gibt die Dauer in Sekunden an. Mit includeSubDomains gilt die Regel auch für alle Subdomains.

Voraussetzung: Deine gesamte Website, inklusive aller Subdomains, läuft sauber über HTTPS, und HTTP-Anfragen werden per Weiterleitung (301 oder 308) auf HTTPS umgeleitet. Der Header wird nur über HTTPS ausgewertet, über HTTP ignorieren ihn Browser.

Beispiel für Nginx im Server-Block deiner HTTPS-Konfiguration:

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

Und das Gleiche für Apache (Modul mod_headers muss aktiv sein):

Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"

Der Wert 31536000 entspricht einem Jahr. Das Wort always sorgt dafür, dass der Header auch bei Fehlerseiten mitgeschickt wird. Mit dem Zusatz preload kannst du deine Domain später in die Preload-Listen der Browser eintragen lassen. Dafür sind mindestens ein Jahr max-age und includeSubDomains nötig. Aber Vorsicht: Das ist schwer rückgängig zu machen. Starte deshalb erst einmal ohne preload und mit einer kürzeren Laufzeit, zum Beispiel einem Tag, und erhöhe sie, wenn alles stabil läuft.

Schritt 3: Die einfachen Header ergänzen

Diese drei Security Header sind unkompliziert und brechen auf normalen Unternehmenswebsites selten etwas. Setze sie in Nginx so:

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;

Was bedeuten sie in der Praxis?

  • nosniff verhindert, dass ein Browser eine hochgeladene Datei als Skript ausführt, nur weil sie danach aussieht.
  • strict-origin-when-cross-origin schickt innerhalb deiner Seite den vollen Pfad mit, an fremde Seiten aber nur die Domain. Das ist ein guter Standard für Datenschutz und Analyse.
  • Permissions-Policy mit leeren Klammern verbietet die genannten Funktionen komplett. Brauchst du zum Beispiel eine Standortabfrage, passt du die Zeile an.

Ein Stolperstein bei Nginx: Wenn du in einem location-Block selbst ein add_header setzt, werden die Header aus dem übergeordneten Block nicht mehr geerbt. Prüfe deshalb nach jeder Änderung mit curl, ob wirklich alle Header ankommen.

Schritt 4: Content Security Policy zuerst im Testmodus

Die Content Security Policy ist der wirkungsvollste Schutz gegen XSS, aber auch der Header, der am ehesten Dinge kaputt macht. Er blockiert alles, was nicht ausdrücklich erlaubt ist, auch den Tracking-Code oder das eingebettete Video, das du vergessen hast. Darum gilt: Nie direkt scharf schalten.

Dafür gibt es den Header Content-Security-Policy-Report-Only. Verstösse werden gemeldet, aber nicht blockiert. Du siehst also, was eine Policy kaputt machen würde, ohne dass Besucher etwas merken. Ein sinnvoller Startpunkt:

add_header Content-Security-Policy-Report-Only "default-src 'self'; img-src 'self' data:; object-src 'none'; base-uri 'self'; frame-ancestors 'self'" always;

Die einzelnen Direktiven in einfachen Worten:

  • default-src 'self' ist die Grundregel: Alles darf nur von deiner eigenen Domain kommen, solange nichts anderes definiert ist.
  • img-src 'self' data: erlaubt Bilder von deiner Domain und eingebettete data-URLs.
  • object-src 'none' sperrt veraltete Plugin-Einbettungen.
  • base-uri 'self' verhindert, dass Angreifer mit einem base-Tag die Basis aller relativen Links umbiegen.
  • frame-ancestors 'self' erlaubt das Einbetten deiner Seite nur auf deiner eigenen Domain und schützt damit vor Clickjacking. Willst du gar keine Einbettung, nimm 'none'.

Öffne nun deine Website und klicke dich durch die wichtigsten Seiten: Startseite, Kontaktformular, Shop oder Terminbuchung. Öffne dabei die Entwicklerkonsole deines Browsers (F12). Jeder Verstoss wird dort als Meldung angezeigt. So findest du heraus, welche externen Quellen du berücksichtigen musst, zum Beispiel ein Analyse-Tool, Schriften oder ein Kartendienst.

Schritt 5: Die Policy verfeinern und scharf schalten

Ergänze nun die Quellen, die du wirklich brauchst, möglichst konkret und nicht mit Platzhaltern. Ein Beispiel für eine Seite mit einem externen Analyse-Skript und einem eingebetteten Kartendienst:

script-src 'self' https://analytics.example.com;
frame-src https://maps.example.com;
connect-src 'self' https://analytics.example.com;

Die MDN Web Docs warnen ausdrücklich vor 'unsafe-inline'. Es erlaubt Inline-Skripte, Inline-Event-Handler wie onclick und javascript:-URLs und nimmt der CSP damit einen grossen Teil ihrer Schutzwirkung. Die empfohlene Alternative ist eine sogenannte strikte CSP mit Nonces oder Hashes:

Content-Security-Policy: script-src 'nonce-ZUFALLSWERT'; object-src 'none'; base-uri 'none'

Der Nonce ist ein Zufallswert, der bei jeder Anfrage neu erzeugt wird und sowohl im Header als auch im script-Tag steht. Er muss unvorhersehbar sein, sonst ist er wertlos. Für statische Seiten sind Hashes der Skriptinhalte oft einfacher. Mit 'strict-dynamic' kannst du ausserdem Skripten, denen du vertraust, erlauben, weitere Skripte nachzuladen. Das vereinfacht die Einbindung von Drittanbietern, birgt aber ein Restrisiko.

Wenn die Konsole im Testmodus über mehrere Tage keine unerwarteten Meldungen mehr zeigt, benenne den Header von Content-Security-Policy-Report-Only in Content-Security-Policy um. Beide Header können übrigens gleichzeitig laufen: Die bewährte Policy erzwingst du, die strengere testest du parallel im Report-Only-Modus.

Typische Fehler beim Setzen von Security Headern

  • HSTS zu früh mit preload: Wenn eine Subdomain noch kein HTTPS kann, sperrst du Besucher aus. Teste zuerst mit kurzer Laufzeit.
  • CSP ohne Testphase: Plötzlich funktionieren Formulare, Chat-Widgets oder Videos nicht mehr.
  • Zu breite Freigaben: Ein Eintrag wie *.beispiel.org kann mehr Quellen öffnen, als dir lieb ist. Erlaube lieber konkrete Hosts.
  • Header nur auf der Startseite: Die Header sollten für alle Antworten gelten, auch für Unterseiten, Fehlerseiten und Dateien.
  • CSP als einzige Massnahme: Auch mit CSP bleiben saubere Eingabeprüfung und regelmässige Updates Pflicht.

Security Header im Alltag pflegen

Mit der einmaligen Einrichtung ist es nicht getan. Sicherheit ist ein Prozess, und deine Website verändert sich laufend: neue Seiten, neue Formulare, neue Dienste von Drittanbietern. Jedes Mal, wenn du etwas Externes einbindest, muss deine Content Security Policy angepasst werden, sonst blockiert der Browser die neue Funktion. Plane deshalb einen festen Rhythmus ein, zum Beispiel einmal pro Quartal: Header mit curl prüfen, Konsole auf Verstösse durchsehen und nicht mehr genutzte Freigaben entfernen. Je kleiner die Liste der erlaubten Quellen, desto besser ist dein Schutz.

Halte ausserdem fest, wer bei euch für diese Konfiguration verantwortlich ist und wo sie dokumentiert ist. Gerade wenn Hosting, Website und Marketing von verschiedenen Personen betreut werden, geht sonst schnell der Überblick verloren. Eine kurze Textdatei mit den gesetzten Headern, dem Datum der letzten Änderung und den freigegebenen Drittanbietern spart dir im Ernstfall viel Zeit. Und wenn du Security Header setzen willst, ohne selbst am Server zu schrauben, übernehmen wir das gerne für dich, inklusive Test und Dokumentation.

Fazit: Security Header setzen lohnt sich für jedes KMU

Wer Security Header setzt, gewinnt mit wenig Aufwand viel Sicherheit. Starte mit HSTS und den drei einfachen Headern, führe die Content Security Policy über den Report-Only-Modus ein und schärfe sie in Ruhe nach. Prüfe nach jeder Änderung mit curl und im Browser, ob alles wie erwartet funktioniert. Gerade bei Websites mit mehreren eingebundenen Diensten ist es sinnvoll, das Setup einmal professionell aufzusetzen und zu dokumentieren. Welche Möglichkeiten wir dafür haben, siehst du bei unseren Leistungen, oder du nimmst direkt Kontakt mit uns auf.

Häufige Fragen

Machen Security Header meine Website langsamer?

Nein. Die Header sind winzige Textzeilen in der Serverantwort. Du merkst keinen Unterschied bei der Ladezeit.

Kann ich die Content Security Policy auch ohne Servereingriff setzen?

Ja, teilweise. Die CSP lässt sich auch per meta-Element im HTML setzen, allerdings mit eingeschränktem Funktionsumfang. So unterstützt der Report-Only-Modus kein meta-Element. Der HTTP-Header ist die bessere Lösung.

Wie oft sollte ich meine Security Header überprüfen?

Mindestens nach jedem grösseren Umbau deiner Seite und immer dann, wenn du einen neuen externen Dienst einbindest, etwa ein Tracking-Tool, ein Video oder ein Buchungssystem. Ein kurzer Check mit curl dauert nur eine Minute.

Was bisher geschah

Wissenswertes aus dem Cyber-Ding namens Internet

10.10.2026 - Tech

LocalBusiness Schema: Lokal besser gefunden werden

LocalBusiness Schema einfach erklärt: So bringst du Adresse, Öffnungszeiten und Kontakt per JSON-LD zu Google. Praxis-Anleitung mit Code für dein KMU.

02.10.2026 - Tech

Security Header setzen: HSTS und CSP Schritt für Schritt

Security Header setzen leicht gemacht: So schützt du deine KMU-Website mit HSTS, CSP und Co. vor XSS und Clickjacking. Schritt für Schritt erklärt, jetzt lesen.

25.09.2026 - Tech

Google AI Mode: So bleibt deine Website sichtbar

Google AI Mode verändert die Google-Suche. Erfahre, wie du in der Search Console prüfst, ob deine Website in KI-Antworten erscheint und sichtbar bleibt.

18.09.2026 - Tech

Prompt Injection: KI-Agenten sicher einsetzen

Prompt Injection kapert KI-Agenten über versteckten Text in Mails und PDFs. So erkennst du dein echtes Risiko und sicherst deine KI in 6 Schritten ab.

12.09.2026 - Tech

Webhook erklärt: Kontaktformular mit n8n automatisieren

Was ist ein Webhook? Lerne die Grundlagen und verbinde dein Kontaktformular Schritt für Schritt mit n8n: mit Code, Sicherheitstipps und Praxisbeispielen.

09.09.2026 - Tech

Model Context Protocol: KI mit deinen Tools verbinden

Das Model Context Protocol verbindet KI mit CRM, Shop und Buchhaltung. Erfahre, was MCP ist, was die neue Version 2026 bringt und wie du als KMU startest.

04.09.2026 - Tech

Musikvideo mit KI erstellen: Making-of von Siamo WOSA

Musikvideo mit KI erstellen: So entstand «Siamo WOSA» mit Suno, ChatGPT Image, Hedra und Remotion. Schritt für Schritt erklärt, mit Code, Tipps und Video.

28.08.2026 - Tech

Design-Trends 2026: So bleibt dein Branding relevant

Design-Trends 2026: Warum Handgemachtes, mutige Typografie und Collagen jetzt wirken und wie du diese Trends clever für dein Schweizer KMU-Branding einsetzt.

21.08.2026 - Tech

INP verbessern: So wird deine Website spürbar schneller

INP verbessern in 5 Schritten: So reagiert deine Website blitzschnell auf jeden Klick. Praxisnahe Tipps zu Core Web Vitals, messbar und sofort umsetzbar.

17.08.2026 - Tech

KI-Inhalte kennzeichnen: EU AI Act Artikel 50

KI-Inhalte kennzeichnen ist seit dem 2. August 2026 Pflicht. Erfahre, was Artikel 50 wirklich von dir verlangt, wen es trifft und wie du Bilder markierst.

15.08.2026 - Tech

Cybersicherheit für KMU: 7 Massnahmen, die wirken

Cybersicherheit für KMU: Erfahre, welche Angriffe Schweizer Betriebe 2026 treffen und mit welchen 7 Massnahmen du deine Daten und deine Website wirksam schützt.

12.08.2026 - cybercrimepolice.ch

Sendungsverifikation im Namen von P...

Mit freundlicher Genehmigung von Cybercrimepolice.ch

Sendungsverifikation im Namen von Planzer ist Phishing

07.08.2026 - Tech

Barrierefreie Website: Was Schweizer KMU jetzt tun

Eine barrierefreie Website wird für Schweizer KMU zum Thema. Erfahre, was die BehiG-Revision bringt und wie du deine Seite in 7 Schritten selbst prüfst.

05.08.2026 - cybercrimepolice.ch

«Hallo Mama»-Mail lockt auf Whats...

Mit freundlicher Genehmigung von Cybercrimepolice.ch

«Hallo Mama»-Mail lockt auf WhatsApp

02.08.2026 - Tech

CSS Features 2026: Weniger JavaScript, mehr Tempo

CSS Features 2026 ersetzen JavaScript: View Transitions, Scroll-Animationen und Container Queries machen deine Website schneller. Jetzt mit Code-Snippets!

29.07.2026 - cybercrimepolice.ch

Angebliche Erneuerung des Zahlungsm...

Mit freundlicher Genehmigung von Cybercrimepolice.ch

Angebliche Erneuerung des Zahlungsmandats bei Klarna

24.07.2026 - Tech

KI-Agenten für KMU: Prozesse clever automatisieren

KI-Agenten für KMU nehmen dir Routinearbeit ab: Anfragen, Angebote und Termine. So startest du 2026 Schritt für Schritt sicher in die Automatisierung.

22.07.2026 - cybercrimepolice.ch

Gefälschter 50-Prozent-Rabattcode ...

Mit freundlicher Genehmigung von Cybercrimepolice.ch

Gefälschter 50-Prozent-Rabattcode für eine Klimaanlage

17.07.2026 - Tech

Passkeys erklärt: Anmelden ohne Passwort für dein KMU

Passkeys ersetzen Passwörter: sicherer, schneller und Phishing-resistent. Erfahre, wie du die passwortlose Anmeldung einrichtest und was jetzt wichtig ist.

15.07.2026 - cybercrimepolice.ch

Angeblich nicht abgeholtes AliExpre...

Mit freundlicher Genehmigung von Cybercrimepolice.ch

Angeblich nicht abgeholtes AliExpress-Paket führt zu Kreditkarten-Phishing