CSP frame-ancestors erlaubt anderen Websites, die Seite in einen Frame einzubetten

Worum geht es

Ihre Website sendet die Direktive frame-ancestors in einem durchgesetzten Content-Security-Policy-Header, aber sie ist so großzügig gesetzt, dass andere Websites Ihre Seiten weiterhin in einem <iframe> einbetten können. Meist steckt ein Platzhalter dahinter, etwa frame-ancestors * oder https:.

Warum X-Frame-Options hier nicht hilft

Browser, die frame-ancestors verstehen, wenden die Direktive an und lesen X-Frame-Options gar nicht. Das gilt unabhängig davon, ob Ihre Website einen X-Frame-Options-Header sendet. Ein zusätzliches X-Frame-Options: SAMEORIGIN neben dieser Direktive ändert deshalb nichts; die Direktive selbst muss enger gefasst werden.

So beheben Sie es

Ersetzen Sie den großzügigen Wert durch den engsten, mit dem Ihre Website auskommt:

Content-Security-Policy: frame-ancestors 'none';
# oder, wenn Sie eigene Seiten einbetten:
Content-Security-Policy: frame-ancestors 'self';
# oder mit einer Allowlist vertrauenswürdiger Websites:
Content-Security-Policy: frame-ancestors 'self' https://partner.example.cz;

Wenn Sie auch ältere Browser ohne frame-ancestors-Unterstützung abdecken möchten, können Sie daneben weiterhin X-Frame-Options mit passendem Wert senden. Moderne Browser folgen der Direktive.

Ergebnis prüfen

Laden Sie die Seite neu und prüfen Sie die Response-Header in den Entwicklertools Ihres Browsers, oder starten Sie einen neuen Scan. Der Befund verschwindet, sobald frame-ancestors keine Websites mehr zulässt, die Sie nicht kontrollieren.

Referenzen