HSTS für Laravel konfigurieren
Schritt-für-Schritt-Anleitung: HTTP Strict Transport Security in Laravel einrichten — Middleware, HTTPS-Redirect und Preload-Registrierung.
HSTS in Laravel
HTTP Strict Transport Security (HSTS) weist Browser an, ausschließlich verschlüsselte Verbindungen zu verwenden. In Laravel setzen Sie den Header über eine Middleware — ohne Server-Konfiguration. HSTS ist mit 15 von 166 Punkten ein wichtiger Faktor im Wolf-Agents Web Security Check.
Zusätzlich zum HSTS-Header muss Laravel HTTPS auf Anwendungsebene erzwingen. URL::forceScheme('https') stellt sicher, dass alle generierten URLs (Routes, Assets, Redirects) HTTPS verwenden. Bei Reverse-Proxy-Setups ist die TrustProxies-Middleware entscheidend.
HSTS-Header in der Middleware setzen
Fügen Sie den Strict-Transport-Security Header in Ihrer SecurityHeaders-Middleware hinzu. Der Header wird bei jedem Response gesetzt und weist den Browser an, für ein Jahr (31536000 Sekunden) ausschließlich HTTPS zu verwenden.
// app/Http/Middleware/SecurityHeaders.php
public function handle(Request $request, Closure $next): Response
{
$response = $next($request);
// HSTS — nur über HTTPS senden
$response->headers->set(
'Strict-Transport-Security',
'max-age=31536000; includeSubDomains; preload'
);
return $response;
} RFC 6797 schreibt vor, dass Browser HSTS-Header über unverschlüsselte Verbindungen ignorieren. Der Header hat nur Wirkung, wenn er über HTTPS gesendet wird. Laravel Forge und Valet konfigurieren HTTPS automatisch.
HTTPS-Redirect und TrustProxies einrichten
HSTS setzt eine funktionierende HTTPS-Konfiguration voraus. URL::forceScheme('https') sorgt dafür, dass Laravel alle URLs mit HTTPS generiert. Bei Reverse-Proxy-Setups (Nginx, Cloudflare) muss die TrustProxies-Middleware konfiguriert sein.
// app/Providers/AppServiceProvider.php
use Illuminate\Support\Facades\URL;
public function boot(): void
{
// HTTPS in Produktion erzwingen
if ($this->app->environment('production')) {
URL::forceScheme('https');
}
} // app/Http/Middleware/TrustProxies.php
use Illuminate\Http\Middleware\TrustProxies as Middleware;
use Illuminate\Http\Request;
class TrustProxies extends Middleware
{
protected $proxies = '*';
protected $headers = Request::HEADER_X_FORWARDED_FOR |
Request::HEADER_X_FORWARDED_PROTO;
} max-age=300 (5 Minuten) und erhöhen Sie schrittweise auf 31536000 (1 Jahr). So können Sie bei Problemen schnell zurücksetzen. Verifizieren und Preload beantragen
Prüfen Sie den HSTS-Header mit curl und beantragen Sie anschließend Preload, damit Browser HTTPS ab dem allerersten Besuch erzwingen.
# HSTS-Header prüfen
curl -sI https://ihre-domain.de | grep -i strict
# Erwartete Ausgabe:
# Strict-Transport-Security: max-age=31536000; includeSubDomains; preload Compliance-Anforderungen
Wie steht Ihre Domain bei HSTS?
Prüfen Sie es jetzt — kostenlos, ohne Registrierung, mit 166 Prüfpunkte.