Permissions Policy für Express.js konfigurieren

Schritt-für-Schritt-Anleitung: Permissions Policy in Express.js per Custom Middleware einrichten — Helmet hat keine eingebaute Unterstützung.

Express.js · Schritt für Schritt

Permissions Policy in Express.js

Permissions Policy kontrolliert, welche Browser-APIs Ihre Express-Anwendung und eingebettete iFrames nutzen dürfen. Wichtig: Helmet hat keine eingebaute Permissions-Policy-Middleware. Sie müssen den Header manuell mit res.setHeader in einer Custom Middleware setzen. Die Implementierung ist trivial — eine einzige Middleware-Funktion genügt.

Permissions Policy ist mit 10 von 166 Punkten ein Faktor im Wolf-Agents Web Security Check. Die Einrichtung dauert weniger als 5 Minuten.

1 Schritt 1 von 2

Custom Middleware für Permissions Policy

Erstellen Sie eine Middleware, die den Permissions-Policy-Header für jeden Response setzt. Registrieren Sie die Middleware früh in der Kette — idealerweise direkt nach Helmet, damit alle Security-Header zusammenstehen.

app.js / server.js Produktiv
// Permissions Policy — Helmet hat KEINE eingebaute Middleware!
app.use((req, res, next) => {
  res.setHeader('Permissions-Policy',
    'camera=(), microphone=(), geolocation=(), payment=(), usb=(), autoplay=(self)'
  );
  next();
});
Helmet hat keine Permissions-Policy-Middleware. Auch wenn Helmet viele Security-Header setzt (CSP, HSTS, X-Content-Type-Options etc.), enthält es keine Permissions-Policy-Unterstützung. Sie müssen den Header immer manuell setzen.
2 Schritt 2 von 2

Header verifizieren

Starten Sie Ihren Express-Server und verifizieren Sie den Header mit curl oder den Browser DevTools.

Terminal Verifizieren
# Express-Server starten
node app.js

# Permissions-Policy-Header prüfen
curl -sI http://localhost:3000 | grep -i permissions

# Erwartete Ausgabe:
# Permissions-Policy: camera=(), microphone=(), geolocation=(), payment=(), usb=(), autoplay=(self)
Für route-spezifische Policies können Sie die Middleware auch als Route-Level Middleware verwenden: app.get('/videocall', ppMiddleware, handler) mit camera=(self).

Wie steht Ihre Domain bei Permissions Policy?

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

Häufig gestellte Fragen

Warum hat Helmet keine Permissions-Policy-Middleware?

Helmet konzentriert sich auf Header, die von der Helmet-Maintainer-Community als stabil und breit unterstützt eingestuft werden. Permissions Policy wird aktuell nur von Chromium-Browsern unterstützt und ist noch in aktiver Entwicklung. Deshalb müssen Sie den Header manuell mit res.setHeader setzen.

Wo in der Middleware-Kette sollte die Permissions-Policy-Middleware stehen?

Am besten früh in der Kette, vor Ihren Route-Handlern. Wenn Sie Helmet verwenden, platzieren Sie die Permissions-Policy-Middleware direkt nach Helmet — so stehen alle Security-Header beieinander und sind leicht zu finden.

Funktioniert die Middleware auch mit TypeScript?

Ja. Ersetzen Sie die require-Syntax durch import-Statements und typisieren Sie req, res und next mit den Express-Typen (Request, Response, NextFunction). Die Middleware-Logik bleibt identisch.

Wird der Header auch bei Fehler-Responses gesetzt?

Ja, die Middleware ruft next() auf und setzt den Header für jeden Response — unabhängig vom Statuscode. Wenn Sie einen eigenen Error-Handler haben, stellen Sie sicher, dass die Permissions-Policy-Middleware vor dem Error-Handler registriert ist.

Kann ich den Header-Wert pro Route unterschiedlich setzen?

Ja. Statt einer globalen Middleware können Sie route-spezifische Middleware verwenden: app.get("/videocall", (req, res, next) => { res.setHeader("Permissions-Policy", "camera=(self), microphone=(self)"); next(); }, handler).