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.
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.
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.
Implementierungs-Architektur
Alle Security Headers zentral per auto_prepend_file oder PSR-15 Middleware — konsolidierte Architektur für PHP-Projekte.
Content Security Policy (CSP)
XSS-Schutz mit header() und Nonce-Generierung per random_bytes() — Report-Only bis Enforcement.
HTTP Strict Transport Security
HTTPS erzwingen per header() mit Preload-Vorbereitung — auto_prepend_file für alle PHP-Dateien.
Sichere Cookie-Konfiguration
session.cookie_secure, session.cookie_httponly und SameSite in php.ini und .user.ini konfigurieren.
Permissions Policy
Browser-APIs einschränken per header() oder auto_prepend_file — Kamera, Mikrofon, Geolocation sperren.
Clickjacking-Schutz
X-Frame-Options und frame-ancestors per header() — Schutz vor Clickjacking-Angriffen.
Referrer-Policy
Referrer-Informationen kontrollieren per header() — strict-origin-when-cross-origin als Standard.
X-Content-Type-Options
MIME-Sniffing verhindern per header() — nosniff als Pflicht-Header für alle Responses.
Cross-Origin Headers
CORP, COEP und COOP gegen Spectre-Angriffe — header()-Konfiguration mit Kompatibilitätstests.
Subresource Integrity
Hash-Prüfung externer Scripts mit hash_file() — automatische SRI-Generierung in PHP.
security.txt
Kontaktdatei unter .well-known/ — PHP-Router-Konfiguration und statische Auslieferung.
Cache-Control
Sicherheitsrelevante Cache-Direktiven per header() — no-store für sensible Seiten und session_cache_limiter().
Reporting API
Report-To und Reporting-Endpoints per header() — CSP-Violations und NEL-Reports empfangen.
Clear-Site-Data
Browser-Daten beim Logout löschen per header() in der Logout-Logik.
Erweiterte Header
Origin-Agent-Cluster, HTTPS-Redirects, X-Permitted-Cross-Domain-Policies und X-DNS-Prefetch-Control.
In 3 Schritten zur sicheren PHP-Konfiguration
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.
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.
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.
Nicht PHP? Andere Anleitungen verfügbar
Webserver
CMS & Shop-Systeme
Frameworks & Sprachen
Hosting-Anbieter
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.