Permissions Policy für IIS konfigurieren
Schritt-für-Schritt-Anleitung: Browser-APIs in IIS einschränken — Kamera, Mikrofon, Geolocation und Payment per web.config oder PowerShell sperren.
Permissions Policy in IIS
Die Permissions Policy kontrolliert, welche Browser-APIs Ihre Website nutzen darf. Mit 10 von 166 Punkten im Wolf-Agents Web Security Check ist sie ein schnell umsetzbarer Sicherheitsgewinn. In IIS setzen Sie den Header per web.config — eine Zeile XML reicht.
Durch das Sperren ungenutzter APIs wie Kamera, Mikrofon und Geolocation verhindern Sie, dass Drittanbieter-Scripts diese APIs missbrauchen. Selbst wenn ein XSS-Angriff Code einschleust, kann dieser keine sensiblen Hardware-Funktionen aktivieren.
Permissions-Policy Header setzen
Die restriktivste Konfiguration sperrt alle APIs mit leeren Allowlists (). Kopieren Sie diese Konfiguration als Ausgangsbasis und geben Sie nur die APIs frei, die Sie tatsächlich benötigen.
<!-- web.config — Permissions Policy -->
<configuration>
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Permissions-Policy"
value="camera=(), microphone=(), geolocation=(), payment=(), usb=(), bluetooth=(), idle-detection=(), serial=(), browsing-topics=()" />
</customHeaders>
</httpProtocol>
</system.webServer>
</configuration> # PowerShell — Permissions Policy setzen
$sitePath = 'MACHINE/WEBROOT/APPHOST/Default Web Site'
$filter = "system.webServer/httpProtocol/customHeaders"
Add-WebConfigurationProperty -pspath $sitePath -filter $filter \
-name "." -value @{
name = 'Permissions-Policy'
value = 'camera=(), microphone=(), geolocation=(), payment=(), usb=(), bluetooth=()'
} Direktiven an die Anwendung anpassen
Wenn Ihre Anwendung Geolocation oder Payment nutzt, geben Sie die jeweilige API für self frei. Die Syntax geolocation=(self) erlaubt nur der eigenen Domain den Zugriff — eingebettete iframes bleiben gesperrt.
<!-- web.config — Permissions Policy mit Ausnahmen -->
<!-- Beispiel: Geolocation für eigene Domain erlauben -->
<configuration>
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Permissions-Policy"
value="camera=(), microphone=(), geolocation=(self), payment=(self), usb=(), bluetooth=(), idle-detection=(), serial=()" />
</customHeaders>
</httpProtocol>
</system.webServer>
</configuration> Header verifizieren
Prüfen Sie den Header nach dem Deployment. IIS lädt web.config-Änderungen automatisch ohne Neustart.
# Permissions-Policy prüfen
curl -sI https://ihre-domain.de | Select-String "Permissions-Policy"
# Erwartete Ausgabe:
# Permissions-Policy: camera=(), microphone=(), geolocation=(), ... Häufige Fehler
Syntax-Fehler bei Allowlists
Die Permissions-Policy-Syntax unterscheidet sich von CSP. Richtig: camera=(). Falsch: camera 'none'. Die API-Namen verwenden Bindestriche, nicht Unterstriche.
Header zu lang für eine Zeile
Die web.config erlaubt keine Zeilenumbrüche im value-Attribut. Halten Sie die Policy kompakt oder teilen Sie auf mehrere Permissions-Policy-Header auf (nur mit HTTP/2+).
API nach Sperre nicht verfügbar
Eine gesperrte API kann per JavaScript nicht mehr angefragt werden. Testen Sie Ihre Anwendung gründlich, bevor Sie APIs sperren, die möglicherweise von Drittanbieter-Widgets genutzt werden.
Compliance-Relevanz
NIS2 fordert technische Maßnahmen zum Schutz personenbezogener Daten. Die Permissions Policy verhindert, dass Browser-APIs wie Kamera und Mikrofon missbraucht werden. DSGVO Artikel 25 (Privacy by Design) unterstützt die restriktive Konfiguration. Der Wolf-Agents Web Security Check bewertet Permissions Policy mit bis zu 10 Punkten.
Wie steht Ihre Domain bei Permissions Policy?
Prüfen Sie es jetzt — kostenlos, ohne Registrierung, mit 166 Prüfpunkte.