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.
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;