Для нашего тезиса нам необходимо разработать прототип подхода AdJail, который обеспечивает защиту от вредоносных объявлений. Подход изолирует сценарии рекламы, помещая их в «теневую страницу» в iframe с разным происхождением. (защищено одной политикой происхождения). Копируя содержимое исходной страницы на теневую страницу, рекламный текст имеет доступ только к контенту, к которому разрешен доступ издателя.Создать контент для iframe другого домена
Проблема заключается в создании iframe для тени. Первоначально мы реализовали это:
if (document.createElement && (iframe = document.createElement('iframe'))) {
iframe.id = "shadowpage";
iframe.name = "shadowpage";
iframe.height = 1400;
iframe.width = 1400;
document.body.appendChild(iframe);
var shadowScript = document.createElement("script");
shadowScript.src = "ShadowTunnelScript.js";
iframe.contentDocument.body.appendChild(shadowScript);
adUrl = adScript;
}
Очевидно, что это не обеспечивает безопасность запроса той же политики происхождения, поскольку это IFrame имеет то же происхождение, содержащей страницы.
Наша альтернатива заключается в следующем с СРК множества Iframe на страницу с другого происхождения:
if (document.createElement && (iframe = document.createElement('iframe'))) {
iframe.id = "shadowpage";
iframe.name = "shadowpage";
iframe.height = 1400;
iframe.width = 1400;
iframe.src = "http://***/AdJail/Shadowpage.html";
//iframe.style.display = "none";
document.body.appendChild(iframe);
}
Но в этом случае пользователь нашего прототипа должен создать shadowpage себя на другой сервер.
Наш вопрос: возможно ли создать такой iframe с другим происхождением, динамически генерировать содержимое этого iframe, чтобы пользователь мог только вызвать библиотеку, не предоставив сам теневую страницу.
Возможно ли это, сначала создав содержимое iframe и затем каким-то образом изменив начало iframe?
HTML5 имеет «песочнице» атрибут фрейма. Но я думаю, что поддержка браузера потребует времени, чтобы наверстать упущенное. – StasM