Clickjacking mit XFO oder CSP minimieren

Clickjacking ist ein schädlicher Angriff, bei dem Nutzer dazu verleitet werden, auf Links oder UI-Elemente auf einer Website zu klicken, die vertrauenswürdig und vertraut erscheint. Dazu wird in der Regel ein Teil oder die gesamte vertrauenswürdige Website mithilfe eines <iframe> in die schädliche Website eingebettet.

Mit dem X-Frame-Options-Header (XFO) und der frame-ancestors-Anweisung im Content-Security-Policy-Header (CSP) können Clickjacking-Angriffe abgeschwächt werden, indem gesteuert wird, wie eine Website in eine <iframe> eingebettet werden kann.

Gründe für einen Fehler bei der Lighthouse-Prüfung

Die Prüfung ist erfolgreich, wenn der XFO-Header mit SAMEORIGIN oder DENY festgelegt ist oder die Anweisung frame-ancestors für den CSP-Header festgelegt ist. Die Prüfung schlägt fehl, wenn keine dieser Richtlinien für die Frame-Steuerung konfiguriert ist.

In einem Lighthouse-Bericht wird gewarnt, dass kein CSP- oder XFO-Antwortheader gefunden wurde, um Clickjacking zu verhindern.
Warnung im Lighthouse-Bericht, dass kein CSP- oder XFO-Antwortheader gefunden wurde, um Clickjacking zu verhindern.

Frame-Kontrollrichtlinie zum Verhindern von Clickjacking festlegen

Für die HTTP-Header der ursprünglichen Dokumentanfrage muss eine Richtlinie für die Frame-Steuerung festgelegt werden. Der X-Frame-Options-Header und die frame-ancestors-Anweisung in der Content-Security-Policy funktionieren nicht, wenn sie auf ein <meta>-Element angewendet werden.

XFO-Header

Wenn Sie entweder DENY oder SAMEORIGIN für die XFO-Überschrift festlegen, werden Clickjacking-Angriffe abgeschwächt:

X-Frame-Options: SAMEORIGIN
X-Frame-Options: DENY

Mit der Direktive SAMEORIGIN kann die Seite nur angezeigt werden, wenn alle übergeordneten Frames denselben Ursprung wie die Seite selbst haben. Umgekehrt verhindert die DENY-Direktive, dass die Seite in einem Frame angezeigt wird, unabhängig vom Ursprung des übergeordneten Frames.

CSP-Header

Mit der frame-ancestors-Anweisung in der CSP-Header wird festgelegt, welche Websites die angegebene Seite in einem <frame>, <iframe>, <object> oder <embed> einbetten dürfen. Ähnlich wie bei XFO kann die CSP-Anweisung frame-ancestors verwendet werden, um Clickjacking-Angriffe abzuschwächen. Dazu wird sie auf self oder none gesetzt:

Content-Security-Policy: frame-ancestors 'self';
Content-Security-Policy: frame-ancestors 'none';

Die frame-ancestors-Richtlinie ist jedoch flexibler als XFO, da damit bestimmte übergeordnete Quellen festgelegt werden können, in die die Seite eingebettet werden kann:

Content-Security-Policy: frame-ancestors 'self' https://example.com;

Ressourcen