Prohibiert die Verwendung von Funktionen, die als Zeichenkette übermittelten Code ausführen. Zum Beispiel werden eval, setTimeout, setInterval aufgrund der Einstellung unsafe-eval blockiert.
Auch Inhalte von externen Quellen werden blockiert, einschließlich Bilder, CSS, WebSockets und insbesondere JS.
Über Texte & Bilder
Es wurde beobachtet, dass moderne Browser Bilder und Texte in HTML umwandeln, um ihre Anzeige zu verbessern (z. B. Hintergrund einstellen, zentrieren usw.). Wenn also ein Bild oder eine Textdatei wie favicon.ico oder robots.txt über ein iframe geöffnet wird, wird es als HTML gerendert. Beachtenswert ist, dass diese Seiten oft keine CSP-Header enthalten und möglicherweise keine X-Frame-Options enthalten, was die Ausführung von beliebigem JavaScript ermöglicht:
Ähnlich wie bei Fehlerantworten, wie Textdateien oder Bildern, werden in der Regel keine CSP-Header mitgeliefert und es kann sein, dass X-Frame-Options fehlen. Fehler können dazu gebracht werden, in einem iframe geladen zu werden, was die folgenden Aktionen ermöglicht:
// Inducing an nginx errorframe=document.createElement("iframe");frame.src="/%2e%2e%2f";document.body.appendChild(frame);// Triggering an error with a long URLframe=document.createElement("iframe");frame.src="/"+"A".repeat(20000);document.body.appendChild(frame);// Generating an error via extensive cookiesfor(var i=0;i<5;i++){document.cookie=i+"="+"a".repeat(4000)};frame=document.createElement("iframe");frame.src="/";document.body.appendChild(frame);// Removal of cookies is crucial post-executionfor(var i=0;i<5;i++){document.cookie=i+"="}
Nach Auslösen einer der genannten Szenarien ist die Ausführung von JavaScript innerhalb des iframes wie folgt möglich: