2010-09-26 87 views
1

嗨,我正在做一個擴展鉻。當我一個頁面的數據庫保存爲一個字符串,然後再打開它就像一個dataURI方案:使用encodeURI來顯示整個頁面

d = 'data:text/html;charset=utf-8'+encodeURI('HTML TEXT') 
location.reload(d); 

這樣做的問題是,網頁,說出它的名字是http://X/,在我執行以上命令在其頭部丟失了javascript文件。 我認爲使用document.write(d),如果d有一個字符串與<head>...</head>,http://X/掛鉤。

但是這會給XSS帶來一個很大的漏洞問題。此時,我試圖在保存原始頁面時考慮白名單標籤...有另一種方法嗎?

回答

0

我不確定你的意思是http://X/,但是如果要複製網站以保留它的來源(即讓你運行的代碼就像從http://X/下載一樣運行),那麼恐怕這是不可能的標準的DOM方法(這將是一個繞過同源安全策略的安全漏洞)。

如果你想安全地運行第三方源代碼,然後使用此:

<iframe sandbox src="data:…"></iframe> 

您可以修改源,並將在那裏<base href="http://X/">,使相對URL正常工作。