Ein weit verbreiteter Abwehrmechanismus ist die Content Security Policy. Die Idee dahinter ist, dass der Webserver beim Ausliefern der eigentlichen Webseite noch zusätzliche Meta-Daten übermittelt, die den Browser dazu veranlassen - verschiedene Vorgänge zu verhindern & zu blocken.
Darunter zählen leider auch teilweise komplette Werbe & Marketing -Maßnahmen.
So ist es damit beispielsweise auch möglich
<!doctype html>
<head>
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self'">
<meta http-equiv="X-Content-Security-Policy" content="default-src 'self'; script-src 'self'">
<meta http-equiv="X-WebKit-CSP" content="default-src 'self'; script-src 'self'">
<title>CSP nutzende Seite</title>
</head>
<body>
<h1>Sie sind sicher</h1>
<p>Dieses Dokument wurde mit einer sehr strikt eingestellten Content Security Policy ausgeliefert.</p>
</body>
</html>
Im Kopf des Dokuments ist ein <meta> Element notiert, welches den Browser erkennen lässt, dass er das Sicherheitskonzept anwenden soll.
Die Anweisung default-src 'self'
bedeutet, dass er prinzipiell nur zusätzliche Inhalte laden darf, wenn sie vom selben Server stammen.
Die Anweisung script-src 'self'
im content-Attribut erklärt dem Browser, dass er nur JavaScript-Dateien laden darf, die vom selben Server stammen wie dieses Dokument.
Diese Direktive hat eine zusätzliche Auswirkung: Der Browser darf keinen JavaScript-Code ausführen, der im HTML-Dokument selbst notiert ist.
Damit auch ältere Versionen des Browsers erreicht werden, benötigt es ein weiteres <meta> Element mit "X-Content-Security-Policy"
.
Auch ältere Versionen von auf der Webkit-Engine basierenden Browsern (wie z. B. Chrome oder Safari) unterstützen vielleicht noch nicht standardmäßig die CSP und benötigen stattdessen "X-Webkit-CSP"
als Header(-Ersatz).
<?php
header("Content-Security-Policy: default-src 'self'; script-src 'self'");
header("X-Content-Security-Policy: default-src 'self'; script-src 'self'");
header("X-WebKit-CSP: default-src 'self'; script-src 'self'");
header()
, um einen HTTP-Header an den Browser zu senden."X-Content-Security-Policy"
und "X-WebKit-CSP"
mit ausgegeben.
Header set Content-Security-Policy "default-src 'self';"
server {
...
add_header Content-Security-Policy "default-src 'self';";
}
Die Content-Security-Policy wird i.d.R. vom Webmaster (Webhoster) erstellt & auf jeder Unterseite der Website eingefügt, auf der der Mechanismus gelten soll.
Als Betreiber der Website haben Sie u.U. die Möglichkeit, unterschiedliche Mechanismen für jede einzelne Seite festzulegen. Unkompliziert realisieren Sie dies, indem Sie .htaccess-Dateien
erstellen, und in den gleichen (oder hierarchisch höheren) Ordnern wie die entsprechenden Webseites abspeichern, oder indem Sie CSP direkt in die Server-Konfiguration verankern.
"x-frame-options:SAMEORIGIN"
oder auch "x-frame-options:DENY"
gleiches erziehlt. Hier sind entsprechende HTTP-Header X-Frame Optionen mit anzupassen.einige Beispiele
X-Frame-Options: ALLOW-FROM https://example.com/
Content-Security-Policy: frame-ancestors 'self' https://example.com
X-Content-Type-Options: nosniff
Content-Security-Policy: frame-ancestors https://*.example.com https://*.example.de https://*.example.net www.beispielseite.de
Firefox hat diese Webseite daran gehindert, auf diese Weise geladen zu werden, weil die Webseite eine Inhaltsicherheitsrichtlinie hat, die dies nicht erlaubt.
www.beispielseite.de hat die Verbindung abgelehnt.