4

私たちの論文では、悪意のある広告に対するセキュリティを提供する AdJail アプローチのプロトタイプを開発する必要があります。このアプローチでは、広告スクリプトを別のオリジンの iframe 内の「シャドウページ」に配置することで分離します。(同一オリジンポリシーで保護) 元のページのコンテンツをシャドウページにコピーすることにより、adscript は発行者がアクセスを許可したコンテンツにのみアクセスできます。

問題は、シャドウページの 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 の src を別のオリジンのページに設定して、次のようにします。

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);
}

ただし、この場合、プロトタイプのユーザーは別のサーバーに自分でシャドウページを作成する必要があります。

私たちの質問は次のとおりです。このような iframe を異なるオリジンで作成し、この iframe のコンテンツを動的に生成して、ユーザーがシャドウページを自分で提供せずにライブラリを呼び出すだけで済むようにすることは可能ですか?

これは、最初に iframe のコンテンツを生成してから、iframe の起点を何らかの方法で変更することで可能でしょうか?

4

1 に答える 1

0

document.domainに値を設定するか、iframeのコンテンツをdatauriとして設定してみてください。

var content=window.btoa('<html>(..)<script>document.domain='sandbox';</script></html>');
iframe.src = "data:text/html;base64,"+content;
于 2012-11-16T13:48:04.130 に答える