Забороняє використання будь-яких функцій, які виконують код, переданий як рядок. Наприклад: eval, setTimeout, setInterval будуть заблоковані через налаштування unsafe-eval
Будь-який вміст зовнішніх джерел також блокується, включаючи зображення, CSS, WebSockets та, особливо, JS
Через Текст та Зображення
Спостерігається, що сучасні браузери перетворюють зображення та тексти в HTML для покращення їх відображення (наприклад, встановлення фонів, центрування тощо). Внаслідок цього, якщо зображення або текстовий файл, такий як favicon.ico або robots.txt, відкривається через iframe, воно відображається як HTML. Зокрема, ці сторінки часто не мають заголовків CSP та можуть не містити X-Frame-Options, що дозволяє виконання довільного JavaScript з них:
Аналогічно, відповіді про помилки, такі як текстові файли або зображення, зазвичай надходять без заголовків CSP та можуть пропустити X-Frame-Options. Помилки можуть бути спричинені для завантаження в межі iframe, що дозволяє виконувати наступні дії:
// 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+"="}
Після спрацювання будь-якої з вказаних ситуацій, виконання JavaScript у межах iframe можливо наступним чином: