PHP — Alle Security-Header-Anleitungen

Schritt-für-Schritt-Anleitungen für jeden Security Header in PHP. header()-Aufrufe, auto_prepend_file und PSR-15 Middleware — von HSTS in 2 Minuten bis CSP mit Nonces.

PHP · Alle Kapitel
PHP · Universelle Sprache

Security Headers in PHP — drei Konfigurationswege

PHP ist mit über 75 % Marktanteil die meistgenutzte serverseitige Sprache im Web. Security Headers setzen Sie in PHP über die header()-Funktion — aber nur, bevor die erste Ausgabe gesendet wird. Dieses Timing-Constraint ist die häufigste Fehlerquelle bei der PHP-Header-Konfiguration.

Es gibt drei bewährte Ansätze: header()-Aufrufe direkt im Code für schnelle Anpassungen, auto_prepend_file in der .user.ini für zentrale Header-Verwaltung ohne Code-Änderungen, und PSR-15 Middleware für Framework- basierte Projekte mit Slim, Lumen oder Mezzio. Unsere Anleitungen decken alle drei Wege ab.

Wichtig: Auf Shared Hosting ohne Zugriff auf die Server-Konfiguration ist auto_prepend_file in der .user.ini der sauberste Weg. Die Datei wird vor jedem PHP-Script automatisch ausgeführt — ohne Änderungen an bestehendem Code. Der Wolf-Agents Web Security Check prüft alle Header unabhängig vom Konfigurationsweg.

Anleitungen

PHP-Anleitungen nach Thema

Jede Anleitung erklärt einen Security Header Schritt für Schritt — mit PHP-spezifischen Konfigurationen für header(), auto_prepend_file und PSR-15 Middleware. Die Punkte zeigen den Einfluss auf Ihre Web Security Note.

Leitfaden Beginner

Implementierungs-Architektur

Alle Security Headers zentral per auto_prepend_file oder PSR-15 Middleware — konsolidierte Architektur für PHP-Projekte.

35 Pkt Advanced

Content Security Policy (CSP)

XSS-Schutz mit header() und Nonce-Generierung per random_bytes() — Report-Only bis Enforcement.

15 Pkt Beginner

HTTP Strict Transport Security

HTTPS erzwingen per header() mit Preload-Vorbereitung — auto_prepend_file für alle PHP-Dateien.

15 Pkt Intermediate

Sichere Cookie-Konfiguration

session.cookie_secure, session.cookie_httponly und SameSite in php.ini und .user.ini konfigurieren.

10 Pkt Beginner

Permissions Policy

Browser-APIs einschränken per header() oder auto_prepend_file — Kamera, Mikrofon, Geolocation sperren.

10 Pkt Beginner

Clickjacking-Schutz

X-Frame-Options und frame-ancestors per header() — Schutz vor Clickjacking-Angriffen.

10 Pkt Beginner

Referrer-Policy

Referrer-Informationen kontrollieren per header() — strict-origin-when-cross-origin als Standard.

10 Pkt Beginner

X-Content-Type-Options

MIME-Sniffing verhindern per header() — nosniff als Pflicht-Header für alle Responses.

30 Pkt Advanced

Cross-Origin Headers

CORP, COEP und COOP gegen Spectre-Angriffe — header()-Konfiguration mit Kompatibilitätstests.

15 Pkt Intermediate

Subresource Integrity

Hash-Prüfung externer Scripts mit hash_file() — automatische SRI-Generierung in PHP.

2 Pkt Beginner

security.txt

Kontaktdatei unter .well-known/ — PHP-Router-Konfiguration und statische Auslieferung.

8 Pkt Intermediate

Cache-Control

Sicherheitsrelevante Cache-Direktiven per header() — no-store für sensible Seiten und session_cache_limiter().

4 Pkt Advanced

Reporting API

Report-To und Reporting-Endpoints per header() — CSP-Violations und NEL-Reports empfangen.

3 Pkt Beginner

Clear-Site-Data

Browser-Daten beim Logout löschen per header() in der Logout-Logik.

4 Pkt Intermediate

Erweiterte Header

Origin-Agent-Cluster, HTTPS-Redirects, X-Permitted-Cross-Domain-Policies und X-DNS-Prefetch-Control.

Schnellstart

In 3 Schritten zur sicheren PHP-Konfiguration

1

Status prüfen

Starten Sie mit dem kostenlosen Web Security Check. 166 Prüfpunkte zeigen Ihnen in Sekunden, welche Header fehlen und wo Handlungsbedarf besteht.

2

auto_prepend_file einrichten

Erstellen Sie eine zentrale Security-Headers-Datei und binden Sie diese über .user.ini ein. Damit werden HSTS, X-Content-Type-Options und Referrer-Policy für alle PHP-Dateien automatisch gesetzt.

3

CSP mit Nonces

Die Content Security Policy konfigurieren Sie mit random_bytes() für Nonce-Generierung. Starten Sie im Report-Only-Modus und wechseln Sie erst nach Analyse zu Enforcement.

Wie sicher ist Ihre Website?

Prüfen Sie es jetzt — kostenlos, ohne Registrierung, mit 166 Prüfpunkte.

Häufig gestellte Fragen

Wo setze ich Security Headers in PHP?

Es gibt drei Wege: Direkt per header()-Aufruf vor jeder Ausgabe, zentral über auto_prepend_file in der .user.ini (ideal für Shared Hosting), oder per PSR-15 Middleware in Frameworks wie Slim oder Lumen. Die auto_prepend_file-Methode ist die sauberste Lösung für Projekte ohne Framework.

Warum bekomme ich "Headers already sent"?

PHP kann HTTP-Header nur senden, bevor die erste Ausgabe (echo, HTML, sogar ein Leerzeichen vor <?php) erfolgt. Prüfen Sie mit headers_sent($file, $line) wo die Ausgabe beginnt. Lösung: ob_start() am Script-Anfang oder auto_prepend_file verwenden.

Wie generiere ich CSP-Nonces in PHP?

Verwenden Sie $nonce = base64_encode(random_bytes(16)) für kryptografisch sichere Nonces. Setzen Sie den Nonce in den CSP-Header und im HTML als script nonce="$nonce". Wichtig: Pro Request einen neuen Nonce generieren — niemals cachen.

Funktioniert auto_prepend_file auf Shared Hosting?

Ja. Erstellen Sie eine .user.ini im Document Root mit auto_prepend_file = /pfad/zu/security-headers.php. Diese Datei wird vor jedem PHP-Script automatisch ausgeführt. Die .user.ini wird alle 5 Minuten (user_ini.cache_ttl) neu eingelesen.

Kann ich Security Headers in php.ini setzen?

Nur eingeschränkt. session.cookie_secure, session.cookie_httponly und session.cookie_samesite sind php.ini-Direktiven. Alle anderen Security Headers müssen per header()-Aufruf im PHP-Code gesetzt werden — php.ini hat keine generische Header-Konfiguration.