Scanner

Security-Headers: Die vergessene DSGVO-Pflicht

Security-Headers wie HSTS, CSP und Referrer-Policy sind laut Art. 32 DSGVO Pflicht. Erfahre, welche Header du brauchst und wie du sie einrichtest.

Compliso Team
5 Min. Lesezeit

Wenn Website-Betreiber an DSGVO denken, denken sie an Cookie-Banner, Datenschutzerklärungen und Einwilligungen. Was die wenigsten auf dem Schirm haben: Art. 32 DSGVO verlangt “geeignete technische Maßnahmen” zum Schutz personenbezogener Daten. Dazu gehören auch HTTP Security-Headers — und die fehlen auf erschreckend vielen Websites.

In diesem Artikel erklären wir, warum Security-Headers eine DSGVO-Pflicht sind, welche Header du brauchst und wie du sie einrichtest.

Warum Security-Headers eine DSGVO-Pflicht sind

Art. 32 DSGVO schreibt vor, dass Verantwortliche “geeignete technische und organisatorische Maßnahmen” treffen müssen, um ein dem Risiko angemessenes Schutzniveau zu gewährleisten. Die Norm nennt explizit:

  • Die Verschlüsselung personenbezogener Daten
  • Die Fähigkeit, die Vertraulichkeit und Integrität der Systeme sicherzustellen
  • Die Fähigkeit, die Verfügbarkeit der Daten rasch wiederherzustellen

Security-Headers sind grundlegende technische Maßnahmen, die genau diese Ziele unterstützen. Sie schützen vor Man-in-the-Middle-Angriffen, Cross-Site-Scripting (XSS), Clickjacking und Datenabfluss. Fehlen sie, ist das eine Lücke im technischen Schutz — und damit ein potentieller DSGVO-Verstoß.

Das Bundesamt für Sicherheit in der Informationstechnik (BSI) empfiehlt Security-Headers ausdrücklich in seinen technischen Richtlinien. Und Datenschutzbehörden berücksichtigen den technischen Schutzstandard bei der Bewertung von Datenschutzverletzungen.

Die wichtigsten Security-Headers erklärt

Strict-Transport-Security (HSTS)

HSTS zwingt den Browser, die Website ausschließlich über HTTPS aufzurufen. Selbst wenn ein Nutzer http:// eingibt, wird er automatisch auf https:// umgeleitet — und zwar direkt im Browser, ohne dass überhaupt eine unverschlüsselte Anfrage gesendet wird.

Warum wichtig: Ohne HSTS kann ein Angreifer in einem öffentlichen WLAN die erste HTTP-Anfrage abfangen und den Nutzer auf eine gefälschte Seite umleiten (SSL-Stripping). Alle danach eingegebenen Daten (Passwörter, persönliche Daten) wären kompromittiert.

Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
  • max-age=31536000: Browser merkt sich die HTTPS-Pflicht für ein Jahr
  • includeSubDomains: Gilt auch für alle Subdomains
  • preload: Erlaubt die Aufnahme in die Browser-Preload-Liste

Content-Security-Policy (CSP)

Die CSP ist der mächtigste Security-Header. Sie definiert, welche Ressourcen (Scripts, Styles, Bilder, Fonts) auf deiner Website geladen werden dürfen und von welchen Quellen.

Warum wichtig: CSP ist der effektivste Schutz gegen Cross-Site-Scripting (XSS). Wenn ein Angreifer bösartigen JavaScript-Code einschleust, blockiert eine strenge CSP die Ausführung, weil der Code nicht von einer erlaubten Quelle stammt.

Content-Security-Policy: default-src 'self';
  script-src 'self' https://cdn.compliso.de;
  style-src 'self' 'unsafe-inline';
  img-src 'self' data: https:;
  font-src 'self';
  connect-src 'self' https://api.compliso.de;
  frame-ancestors 'none';

Tipp: Starte mit einer Report-Only-Policy und beobachte, welche Ressourcen blockiert würden. So kannst du die CSP schrittweise verschärfen, ohne die Website versehentlich kaputtzumachen:

Content-Security-Policy-Report-Only: default-src 'self'; report-uri /csp-report

X-Frame-Options

Verhindert, dass deine Website in einem <iframe> auf einer fremden Seite eingebettet wird.

Warum wichtig: Ohne diesen Header kann ein Angreifer deine Website in einem unsichtbaren iFrame einbetten und Nutzer dazu bringen, unwissentlich Aktionen auszuführen (Clickjacking). Beispiel: Ein unsichtbarer iFrame über einem “Hier klicken”-Button könnte den Nutzer dazu bringen, in deiner App eine Einstellung zu ändern.

X-Frame-Options: DENY
  • DENY: Kein Einbetten erlaubt
  • SAMEORIGIN: Nur Einbetten von der eigenen Domain erlaubt

X-Content-Type-Options

Verhindert, dass der Browser den MIME-Typ einer Datei “errät” (MIME-Sniffing).

Warum wichtig: Ohne diesen Header könnte ein Browser eine als Bild hochgeladene Datei als JavaScript interpretieren und ausführen. Das ist ein klassischer Angriffsvektor: Der Angreifer lädt eine Datei mit bösartigem JavaScript hoch, benennt sie als .jpg, und der Browser führt den Code aus.

X-Content-Type-Options: nosniff

Referrer-Policy

Steuert, welche Informationen im Referrer-Header an andere Websites gesendet werden, wenn ein Nutzer einen Link klickt.

Warum wichtig: Der Referrer-Header kann sensible Informationen enthalten — zum Beispiel URLs mit Session-IDs, Suchbegriffen oder internen Pfaden. Ohne Referrer-Policy werden diese Daten an jede verlinkte externe Website gesendet.

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

Diese Einstellung sendet bei Anfragen an andere Domains nur die Origin (z.B. https://example.com), nicht den vollständigen Pfad.

Permissions-Policy

Steuert, welche Browser-Features (Kamera, Mikrofon, Geolocation) deine Website und eingebettete iFrames nutzen dürfen.

Warum wichtig: Ohne diesen Header könnten eingebettete Drittanbieter-Scripts unbemerkt auf Kamera oder Mikrofon zugreifen. Die Permissions-Policy schließt diese Möglichkeit aus.

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

Die leeren Klammern () bedeuten: Niemandem erlaubt, nicht einmal der eigenen Seite.

Checkliste: Security-Headers für deine Website

  • HSTS mit max-age von mindestens einem Jahr
  • Content-Security-Policy definiert (mindestens default-src 'self')
  • X-Frame-Options auf DENY oder SAMEORIGIN
  • X-Content-Type-Options auf nosniff
  • Referrer-Policy auf strict-origin-when-cross-origin oder strenger
  • Permissions-Policy schränkt unnötige APIs ein

So richtest du Security-Headers ein

Apache (.htaccess)

<IfModule mod_headers.c>
  Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
  Header always set X-Frame-Options "DENY"
  Header always set X-Content-Type-Options "nosniff"
  Header always set Referrer-Policy "strict-origin-when-cross-origin"
  Header always set Permissions-Policy "camera=(), microphone=(), geolocation=()"
  Header always set Content-Security-Policy "default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; font-src 'self'"
</IfModule>

Nginx

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
add_header X-Frame-Options "DENY" 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;
add_header Content-Security-Policy "default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; font-src 'self'" always;

Wichtig: Teste nach dem Einrichten gründlich! Eine zu strenge CSP kann dafür sorgen, dass externe Ressourcen (Google Analytics, Fonts, eingebettete Videos) nicht mehr laden. Passe die Policy schrittweise an.

Security-Headers automatisch prüfen

Du bist dir nicht sicher, welche Security-Headers deine Website aktuell setzt? Der Compliso Scanner prüft automatisch alle relevanten Security-Headers und bewertet sie:

  • Fehlende Header werden als Risiko markiert
  • Schwache Konfigurationen werden erkannt (z.B. zu kurzer HSTS max-age)
  • Du erhältst konkrete Empfehlungen zur Verbesserung

Erfahre mehr über die Security-Checks von Compliso oder scanne deine Website jetzt kostenlos und erfahre in Sekunden, wie es um deine Security-Headers steht.

security-headers dsgvo website-sicherheit hsts csp

Deine Website DSGVO-konform machen?

Compliso prüft deine Website automatisch auf Cookies, Tracker, Dark Patterns und Accessibility-Probleme.