Schützen Sie Ihre Website vor Click-Jacking-Angriffen, indem Sie den CSP-Header (Content Security Policy) implementieren
CSP ist einer der 10 sichersten Header des OWASP und wird häufig von Sicherheitsexperten oder Tools zur Implementierung empfohlen. Es gibt viele Optionen zum Erstellen der Richtlinie, um zu erzwingen, wie Sie Ihre Webressourcen verfügbar machen möchten.
Eine der Richtlinien genannt frame-ancestors
die in CSP Version 2 eingeführt wurden, bietet mehr Flexibilität im Vergleich zu X-Frame-Options-Header. frame-ancestors
funktioniert auf die gleiche Weise wie die X-Frame-Optionen, um zuzulassen oder zu verbieten, dass Ressourcen mithilfe von Iframe, Frame, Objekt, Einbettung und Applet-Element eingebettet werden.
Ich denke, X-Frame-Optionen werden in naher Zukunft veraltet sein, wenn CSP vollständig mit allen gängigen Browsern kompatibel ist. Während ich schreibe, CSP-Frame-Vorfahren funktioniert mit allen aktuellen Browserversionen außer IE.
Ich weiß nicht, wann Microsoft die Unterstützung für den Internet Explorer zulässt. Sie können die Browserkompatibilität jederzeit unter überprüfen Kann ich die Seite benutzen?.
Schauen wir uns das folgende Implementierungsverfahren an.
Apache HTTP
mod_headers
ist die Voraussetzung, um Header in Apache einzufügen. Abhängig vom Betriebssystem und der Version, aber wenn Sie Ubuntu und Apache 2.4 verwenden, können Sie verwenden a2enmod headers
zu ermöglichen es.
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: Alle Konfigurationen, die Sie in beiden Fällen vornehmen können httpd.conf
Datei oder eine effektive Konfigurationsdatei, die Sie verwenden.
Abgelehnt von allen
Ähnlich wie bei X-Frame-Optionen DENY. Wenn Sie nicht möchten, dass eine Site (einschließlich Self) eingebettet wird, fügen Sie Folgendes hinzu.
Header set Content-Security-Policy "frame-ancestors 'none';"
Speichern Sie die Datei und starten Sie das Apache-HTTP neu, damit es wirksam wird.
Ich habe versucht, die Site einzubetten, und wie Sie sehen, wurde sie blockiert.
Erlaube von dir selbst, aber VERWEIGERE andere
Ähnlich wie bei den X-Frame-Optionen SAMEORIGIN können Sie Folgendes hinzufügen.
Header set Content-Security-Policy "frame-ancestors 'self';"
Erlaube von selbst und mehreren Domänen
X-Frame-Optionen hatten keine Option, die von mehreren Domänen zugelassen werden konnte. Dank CSP können Sie wie folgt vorgehen.
Header set Content-Security-Policy "frame-ancestors 'self' 'geekflare.com' 'gf.dev' 'geekflare.dev';"
Mit den oben genannten Informationen kann der Inhalt von self, geekflare.com, gf.dev, geekflare.dev, eingebettet werden. Ändern Sie diese Domains mit Ihren.
Nginx
Das Konzept und die Direktive sind die gleichen wie oben im Abschnitt Apache HTTP erläutert, mit Ausnahme der Art und Weise, wie Sie den Header hinzufügen. Überschriften in Nginx sollten unter dem hinzugefügt werden server
Block in einer entsprechenden Konfigurationsdatei.
Verweigere alles
add_header Content-Security-Policy "frame-ancestors 'none';";
Verweigere alles, aber nicht dich 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 ermöglicht das Einbetten von Inhalten auf yoursite.com und example.come. Vergessen Sie nach dem Vornehmen von Änderungen nicht, den Nginx-Server neu zu starten, um die Richtlinie zu testen.
WordPress
Es hängt davon ab, wie Sie WordPress hosten.
Wenn Sie wie eine Cloud oder VPS selbst gehostet werden, verwenden Sie möglicherweise einen Webserver wie Apache oder Nginx. Wenn ja, können Sie den oben genannten Anweisungen folgen, um sie anstelle von WordPress auf einem Webserver zu implementieren. Wenn Sie jedoch auf Shared Hosting oder kein Zugriff zum Ändern von Webservern, dann können Sie ein Plugin nutzen.
Um CSP in WordPress zu implementieren, können Sie das verwenden Plugin für Content Security Policy Pro.
Verifikation
Sobald Sie mit der Implementierung fertig sind, können Sie entweder die im Browser integrierten Entwicklertools oder a verwenden Test-Tool für sichere Header.
Fazit
CSP ist einer der mächtigsten, sichere Header um Web-Schwachstellen zu verhindern. Ich hoffe, die obigen Anweisungen helfen Ihnen bei der Implementierung von Frame-Vorfahren in Apache und Nginx.