Herhangi bir fonksiyonun, bir dize olarak iletilen kodu çalıştırmasını engeller. Örneğin: eval, setTimeout, setInterval gibi fonksiyonlar, unsafe-eval ayarı nedeniyle engellenir.
Dış kaynaklardan gelen tüm içerikler engellenir, bunlar arasında resimler, CSS, WebSockets ve özellikle JS bulunur.
Metin ve Resimler Aracılığıyla
Görüldüğü üzere modern tarayıcılar, görüntüleri ve metinleri HTML'e dönüştürerek gösterimlerini geliştirir (örneğin arka plan ayarları, ortalamalar vb.). Bu nedenle, favicon.ico veya robots.txt gibi bir resim veya metin dosyası bir iframe aracılığıyla açılırsa, HTML olarak işlenir. Özellikle bu sayfalar genellikle CSP başlıklarını içermez ve X-Frame-Options'ı içermeyebilir, bu da bunlardan herhangi bir JavaScript'in yürütülmesine olanak tanır:
Benzer şekilde, metin dosyaları veya resimler gibi hata yanıtları genellikle CSP başlıklarını içermez ve X-Frame-Options'ı atlayabilir. Hatalar, bir iframe içinde yüklenmeye zorlanabilir ve aşağıdaki eylemlere izin verebilir:
// 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+"="}
Bahsedilen senaryolardan herhangi birini tetikledikten sonra, iframe içinde JavaScript yürütmesi aşağıdaki gibi gerçekleştirilebilir: