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.
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.
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.
// Permissions Policy — Helmet hat KEINE eingebaute Middleware!
app.use((req, res, next) => {
res.setHeader('Permissions-Policy',
'camera=(), microphone=(), geolocation=(), payment=(), usb=(), autoplay=(self)'
);
next();
}); Header verifizieren
Starten Sie Ihren Express-Server und verifizieren Sie den Header mit curl oder den Browser DevTools.
# 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) 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).