2012-05-23 87 views
4

對於我們的論文,我們需要開發AdJail方法的原型,該方法可提供針對惡意廣告的安全性。該方法通過將廣告腳本放置在不同來源的iframe中的「shadowpage」中來隔離廣告腳本。 (受同源策略保護)通過將原始頁面的內容複製到shadowpage,adscript只能訪問發佈者允許訪問的內容。爲其他域的iframe創建內容

問題在於爲shadowpage創建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); 
} 

但在這種情況下,我們的原型的用戶需要在不同的創建shadowpage自己服務器。

我們的問題是:是否有可能創建具有不同來源的iframe,動態生成此iframe的內容,以便用戶只需調用庫而不需要自己提供shadowpage。

這可能是通過首先生成iframe的內容然後以某種方式改變iframe的來源?

+0

HTML5對iframe的「沙箱」屬性。但我想瀏覽器支持需要時間才能趕上。 – StasM

回答

0

你可以嘗試設置一個值,document.domain的或設置IFRAME內容作爲datauri:

var content=window.btoa('<html>(..)<script>document.domain='sandbox';</script></html>'); 
iframe.src = "data:text/html;base64,"+content; 
相關問題