Tutorial: How to Protect your Website with Security Headers

Melden

Dieses Tutorial konzentriert sich auf die Sicherheit von Web-Headern (HTTP Security Headers). Diese sind entscheidend, um deine Website vor Angriffen wie Cross-Site Scripting (XSS), Clickjacking und Code-Injection zu schützen.


HTTP-Security-Header sind Anweisungen, die der Server an den Browser sendet. Sie sagen dem Browser, wie er sich beim Umgang mit den Inhalten deiner Website verhalten soll.

Schritt 1: Die wichtigsten Header verstehen

Hier sind die 5 wichtigsten Header, die du implementieren solltest:

  1. Content Security Policy (CSP): Verhindert XSS, indem sie festlegt, welche Quellen (Skripte, Bilder) geladen werden dürfen.
  2. Strict-Transport-Security (HSTS): Zwingt den Browser, nur über HTTPS zu kommunizieren.
  3. X-Frame-Options: Schützt vor Clickjacking (verhindert, dass deine Seite in einem Iframe auf einer fremden Seite angezeigt wird).
  4. X-Content-Type-Options: Verhindert das "MIME-Sniffing" (dass der Browser versucht, Dateitypen zu erraten).
  5. Referrer-Policy: Steuert, wie viel Information beim Klicken auf einen Link an die Zielseite übertragen wird.

Schritt 2: Implementierung (Beispiele)

Je nachdem, welchen Webserver du nutzt, fügst du den Code in die Konfigurationsdatei ein.

A. Für Apache (.htaccess Datei)

Kopiere diesen Block in deine .htaccess Datei im Hauptverzeichnis:

<IfModule mod_headers.c>
    # 1. X-Frame-Options
    Header set X-Frame-Options "SAMEORIGIN"

    # 2. X-Content-Type-Options
    Header set X-Content-Type-Options "nosniff"

    # 3. Referrer-Policy
    Header set Referrer-Policy "strict-origin-when-cross-origin"

    # 4. Permissions-Policy (Kamera, Mikrofon etc. einschränken)
    Header set Permissions-Policy "geolocation=(), microphone=(), camera=()"

    # 5. Strict-Transport-Security (HSTS) - Nur wenn SSL aktiv ist!
    Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"

    # 6. Content Security Policy (CSP) - Vorsicht: Muss individuell angepasst werden!
    Header set Content-Security-Policy "default-src 'self'; script-src 'self' https://trustedscripts.com; style-src 'self' 'unsafe-inline';"
</IfModule>

B. Für Nginx (nginx.conf)

Füge diese Zeilen in deinen server-Block ein:

add_header X-Frame-Options "SAMEORIGIN";
add_header X-Content-Type-Options "nosniff";
add_header Referrer-Policy "strict-origin-when-cross-origin";
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
add_header Content-Security-Policy "default-src 'self';";

C. Für WordPress (via PHP)

Falls du keinen Zugriff auf die Server-Konfiguration hast, füge dies in die functions.php deines Themes ein:

function add_security_headers() {
    header("X-Frame-Options: SAMEORIGIN");
    header("X-Content-Type-Options: nosniff");
    header("Referrer-Policy: strict-origin-when-cross-origin");
    header("Strict-Transport-Security: max-age=31536000");
}
add_action('send_headers', 'add_security_headers');

Schritt 3: Die Content Security Policy (CSP) richtig einstellen

Die CSP ist der mächtigste, aber auch komplizierteste Header. Wenn du sie zu streng einstellst, funktionieren Google Fonts, YouTube-Embeds oder Tracking-Skripte nicht mehr.

  • default-src 'self': Erlaubt nur Inhalte von deiner eigenen Domain.
  • script-src 'self' https://www.google-analytics.com: Erlaubt eigene Skripte und die von Google Analytics.
  • Tipp: Nutze csp-evaluator.withgoogle.com, um deine Policy zu prüfen.

Schritt 4: Testen der Sicherheit

Nachdem du die Header eingebaut hast, musst du prüfen, ob sie aktiv sind.

  1. Online-Tool: Gehe auf securityheaders.com.
  2. Gib deine URL ein.
  3. Dein Ziel ist ein Grade A. Das Tool zeigt dir genau an, welcher Header noch fehlt oder falsch konfiguriert ist.

Häufige Fehler vermeiden

  • HSTS ohne SSL: Aktiviere HSTS erst, wenn dein SSL-Zertifikat einwandfrei funktioniert, sonst sperrst du dich selbst aus.
  • Zu strikte CSP: Teste deine Website nach jeder Änderung an der CSP (besonders Formulare und interaktive Elemente).
  • Doppelte Header: Achte darauf, dass Header nicht doppelt gesetzt werden (z. B. durch ein Plugin UND die .htaccess), da dies zu Fehlern führen kann.

Zusammenfassung

Sichere Header sind "Low Hanging Fruits" der Web-Security. Mit wenigen Zeilen Code erhöhst du die Sicherheit deiner Nutzer massiv, ohne die Performance deiner Seite zu beeinträchtigen.

0