Schützen Sie Ihre Website vor Click-Jacking-Angriffen, indem Sie einen CSP-Header (Content Security Policy) implementieren
CSP ist einer der 10 sichersten Header von OWASP und wird häufig von Sicherheitsexperten oder -tools zur Implementierung empfohlen. Es gibt viele Möglichkeiten, die Richtlinie so zu gestalten, dass sie durchsetzt, wie Sie Ihre Webressourcen offenlegen wollen.
Eine der Direktiven namens frame-ancestors
die in CSP Version 2 eingeführt wurden, bieten mehr Flexibilität im Vergleich zu den X-Frame-Options-Header. frame-ancestors
funktioniert auf die gleiche Weise wie die X-Frame-Options, um die Einbettung von Ressourcen mittels iframe-, frame-, object-, embed- und applet-Elementen zu erlauben oder zu verbieten.
Ich denke, dass X-Frame-Options in naher Zukunft überflüssig sein wird, wenn CSP vollständig mit allen wichtigen Browsern kompatibel ist. Wie ich schreibe, CSP-Rahmen-Anker funktioniert mit allen aktuellen Browser-Versionen außer IE.
Ich weiß nicht, wann Microsoft die Unterstützung für den IE erlauben wird. Sie können die Browserkompatibilität jederzeit überprüfen unter Kann ich die Website verwenden.
Schauen wir uns das folgende Umsetzungsverfahren an.
Apache-HTTP
mod_headers
ist die Voraussetzung für die Einbindung von Headern in den Apache. Je nach Betriebssystem und Version, aber wenn Sie Ubuntu verwenden und Apache 2.4 dann können Sie a2enmod headers
um sie zu aktivieren.
root@geekflare:/etc/apache2# a2enmod headers
Enabling module headers.
To activate the new configuration, you need to run:
systemctl restart apache2
root@geekflare:/etc/apache2# systemctl restart apache2
root@geekflare:/etc/apache2#
Hinweis: die gesamte Konfiguration, die Sie entweder in httpd.conf
Datei oder eine andere effektive Konfigurationsdatei, die Sie verwenden.
DENY von ALL
Ähnlich wie bei X-Frame-Options DENY. Wenn Sie nicht möchten, dass eine Website (einschließlich Ihrer eigenen) eingebettet wird, fügen Sie Folgendes hinzu.
Header set Content-Security-Policy "frame-ancestors 'none';"
Speichern Sie die Datei und starten Sie den Apache-HTTP neu, damit sie wirksam wird.
Ich habe versucht, die Seite einzubetten, und wie Sie sehen können, wurde sie blockiert.
Von sich selbst zulassen, aber andere verleugnen
Ähnlich wie bei X-Frame-Options SAMEORIGIN können Sie Folgendes hinzufügen.
Header set Content-Security-Policy "frame-ancestors 'self';"
Von sich selbst und mehreren Domänen aus zulassen
X-Frame-Options hatte keine Option, um mehrere Domains zuzulassen. Dank CSP können Sie dies nun wie unten beschrieben tun.
Header set Content-Security-Policy "frame-ancestors 'self' 'geekflare.com' 'gf.dev' 'geekflare.dev';"
Die obigen Angaben ermöglichen das Einbetten von Inhalten von self, geekflare.com, gf.dev, geekflare.dev. Ändern Sie diese Domains mit Ihren.
Nginx
Das Konzept und die Direktive sind die gleichen wie oben im Abschnitt über Apache-HTTP erläutert, mit Ausnahme der Art und Weise, wie Sie die Header hinzufügen. Header in Nginx sollten unter der server
Block in einer entsprechenden Konfigurationsdatei.
alle verweigern
add_header Content-Security-Policy "frame-ancestors 'none';";
Alle verleugnen, aber nicht sich selbst
add_header Content-Security-Policy "frame-ancestors 'self';";
Aus mehreren Domänen zulassen
add_header Content-Security-Policy "frame-ancestors 'yoursite.com' 'example.com';";
Das obige Beispiel erlaubt das Einbetten von Inhalten auf yoursite.com und example.come. Vergessen Sie nach den Änderungen nicht, den Nginx-Server neu zu starten, um die Richtlinie zu testen.
WordPress
Das hängt davon ab, wie Sie WordPress hosten.
Wenn Sie selbst gehostet werden, z. B. in einer Cloud oder auf einem VPS, dann verwenden Sie möglicherweise einen Webserver wie Apache oder Nginx. In diesem Fall können Sie die oben genannten Schritte zur Implementierung auf dem Webserver anstelle von WordPress durchführen. Wenn Sie jedoch auf gemeinsames Hosting oder keinen Zugang zum Ändern von Webservern haben, dann können Sie ein Plugin einsetzen.
Um CSP in WordPress zu implementieren, können Sie die Plugin "Content Security Policy Pro.
Überprüfung
Sobald Sie mit der Implementierung fertig sind, können Sie entweder die in den Browser eingebauten Entwicklerwerkzeuge oder ein Testwerkzeug für sichere Header.
Schlussfolgerung
CSP ist einer der mächtigsten, sichere Kopfzeilen um Web-Schwachstellen zu verhindern. Ich hoffe, die obigen Anweisungen zeigen Ihnen, wie Sie Frame-Ancestoren in Apache und Nginx implementieren können.