Erweiterte Header für Astro konfigurieren

Schritt-für-Schritt-Anleitung: Origin-Agent-Cluster, HTTPS-Redirects und weitere Härtungsmaßnahmen per Middleware konfigurieren.

Astro · Schritt für Schritt

Erweiterte Header in Astro

Neben den Kern-Security-Headern gibt es weitere Header, die die Sicherheit erhöhen: Origin-Agent-Cluster erzwingt Prozess-Isolation im Browser, X-DNS-Prefetch-Control verhindert Privacy-Leaks durch DNS-Prefetching, und X-Permitted-Cross-Domain-Policies blockiert Flash/PDF-Cross-Domain-Zugriffe. Zusammen sind diese Header mit 4 von 166 Punkten im Wolf-Agents Web Security Check relevant.

In Astro konfigurieren Sie alle erweiterten Header zentral in der Middleware. Für SSG-Deployments setzen Sie die Header auf dem Webserver oder der Hosting-Plattform. Wolf-Agents setzt alle erweiterten Header produktiv per Astro-Middleware.

Diese Header haben keine Nebenwirkungen bei typischen Astro-Websites und können ohne Risiko aktiviert werden. Sie sind der letzte Baustein für eine vollständige Header-Absicherung und heben Ihre Note im Wolf-Agents Web Security Check auf das nächste Level.

1Schritt 1 von 5

Erweiterte Header per Middleware (SSR)

Fügen Sie die erweiterten Header zur bestehenden Middleware hinzu. Der HTTPS-Redirect in der Middleware ist nur nötig, wenn Sie nicht hinter einem Reverse Proxy stehen -- Nginx oder Cloudflare uebernehmen den Redirect typischerweise auf Server-Ebene.

src/middleware.tsSSR
// src/middleware.ts -- Erweiterte Header (SSR)
import { defineMiddleware } from 'astro:middleware';

export const onRequest = defineMiddleware(async (context, next) => {
  // HTTPS-Redirect (wenn nicht hinter Reverse Proxy)
  const url = new URL(context.request.url);
  if (url.protocol === 'http:' && !url.hostname.includes('localhost')) {
    return Response.redirect(
      url.href.replace('http:', 'https:'), 301
    );
  }

  const response = await next();

  // Origin-Agent-Cluster: Prozess-Isolation
  response.headers.set('Origin-Agent-Cluster', '?1');

  // DNS-Prefetch deaktivieren (Privacy)
  response.headers.set('X-DNS-Prefetch-Control', 'off');

  // X-Permitted-Cross-Domain-Policies (Flash/PDF)
  response.headers.set('X-Permitted-Cross-Domain-Policies', 'none');

  return response;
});
2Schritt 2 von 5

X-Powered-By entfernen und Header kombinieren

Einige Astro-Adapter oder Node.js-Frameworks setzen X-Powered-By und Server-Header, die den verwendeten Tech-Stack verraten. Entfernen Sie diese Header, um Angreifern weniger Informationen zu geben. Kombinieren Sie das Entfernen mit dem Setzen der erweiterten Header.

src/middleware.tsKombiniert
// src/middleware.ts -- X-Powered-By entfernen und Header setzen
import { defineMiddleware } from 'astro:middleware';

export const onRequest = defineMiddleware(async (context, next) => {
  const response = await next();

  // Server-Identifikation entfernen
  response.headers.delete('X-Powered-By');
  response.headers.delete('Server');

  // Erweiterte Header setzen
  response.headers.set('Origin-Agent-Cluster', '?1');
  response.headers.set('X-DNS-Prefetch-Control', 'off');
  response.headers.set('X-Permitted-Cross-Domain-Policies', 'none');
  response.headers.set('X-Download-Options', 'noopen');

  return response;
});
3Schritt 3 von 5

SSG-Hosting-Varianten

Für statische Deployments setzen Sie die erweiterten Header auf dem Webserver oder der Hosting-Plattform. Auf Nginx entfernen Sie den Server-Header mit server_tokens off und dem more_clear_headers-Modul.

nginx.confNginx
# Nginx -- Erweiterte Header (SSG)
add_header Origin-Agent-Cluster "?1" always;
add_header X-DNS-Prefetch-Control "off" always;
add_header X-Permitted-Cross-Domain-Policies "none" always;

# Server-Header entfernen
server_tokens off;
more_clear_headers Server;

# HTTPS-Redirect
server {
    listen 80;
    server_name ihre-domain.de;
    return 301 https://$host$request_uri;
}
vercel.jsonVercel
// vercel.json -- Erweiterte Header
{
  "headers": [{
    "source": "/(.*)",
    "headers": [
      { "key": "Origin-Agent-Cluster", "value": "?1" },
      { "key": "X-DNS-Prefetch-Control", "value": "off" },
      { "key": "X-Permitted-Cross-Domain-Policies", "value": "none" },
      { "key": "X-Content-Type-Options", "value": "nosniff" }
    ]
  }]
}
4Schritt 4 von 5

Verifizieren

Prüfen Sie alle erweiterten Header im Production-Build. Stellen Sie sicher, dass X-Powered-By und Server nicht mehr in den Response-Headers erscheinen.

TerminalVerifizieren
# Erweiterte Header prüfen
curl -sI https://ihre-domain.de | grep -iE "origin-agent|x-dns|x-permitted|x-powered|server:"

# Erwartete Ausgabe:
# Origin-Agent-Cluster: ?1
# X-DNS-Prefetch-Control: off
# X-Permitted-Cross-Domain-Policies: none
# (X-Powered-By und Server sollten NICHT erscheinen)

# Wolf-Agents Web Security Check für vollständige Analyse
# https://wolf-agents.com/tools/web-security-check
5Schritt 5 von 5

Vollstaendige Header-Checkliste für Astro

Mit den erweiterten Headern vervollständigen Sie die Security-Header-Absicherung Ihrer Astro-Anwendung. Die vollständige Checkliste für eine Note A+ im Wolf-Agents Web Security Check umfasst: CSP (35 Pkt), Cross-Origin Headers (30 Pkt), SRI (15 Pkt), HSTS (10 Pkt), X-Frame-Options (10 Pkt), Referrer-Policy (10 Pkt), X-Content-Type-Options (10 Pkt), Permissions-Policy (20 Pkt), Cache-Control (8 Pkt), Reporting API (4 Pkt), Clear-Site-Data (3 Pkt), TLS (4 Pkt), security.txt (2 Pkt) und die hier behandelten erweiterten Header (4 Pkt).

In der Praxis setzen Sie alle Header in einer einzigen Middleware-Datei (src/middleware.ts). Wolf-Agents verwaltet 15+ Security-Header in der Middleware und erreicht damit konsistent die Note A+ im eigenen Web Security Check. Für SSG-Deployments replizieren Sie die Header-Konfiguration auf dem Webserver.

Häufige Fehler bei erweiterten Headern in Astro

HTTPS-Redirect in Middleware statt Server

HTTPS-Redirects sollten idealerweise auf dem Webserver (Nginx) oder Load Balancer erfolgen -- nicht in der Astro-Middleware. Der Server-Redirect ist schneller, wird vor dem App-Start ausgeführt und schlaegt nie fehl, wenn die App nicht erreichbar ist.

X-Powered-By nicht entfernt

Der @astrojs/node-Adapter oder Express setzen X-Powered-By: Express. Entfernen Sie diesen Header in der Middleware: response.headers.delete('X-Powered-By'). Auf Nginx: proxy_hide_header X-Powered-By.

DNS-Prefetch für Performance nötig

Wenn Ihre Astro-App viele externe Domains laedt (CDN, Analytics, Fonts), kann X-DNS-Prefetch-Control: off die Performance verschlechtern. Setzen Sie in diesem Fall explizite <link rel="dns-prefetch"> Tags im Layout statt den Header global zu deaktivieren.

Header bei prerender-Seiten fehlen

Prerenderte Seiten erhalten keine Middleware-Header. Setzen Sie die erweiterten Header auf dem Webserver, um alle Seiten im Hybrid-Modus abzudecken -- auch die statisch generierten.

Compliance-Relevanz

Erweiterte Header ergänzen die Kern-Security-Header und erhöhen die Gesamtsicherheit. NIS2 fordert umfassende technische Maßnahmen -- jeder zusätzliche Header reduziert die Angriffsfläche. Das Entfernen von X-Powered-By und Server ist eine grundlegende Härtungsmaßnahme, die von OWASP und dem BSI empfohlen wird. Der Wolf-Agents Web Security Check bewertet erweiterte Header mit bis zu 4 Punkten.

Wie steht Ihre Domain bei Erweiterte Header?

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