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;