使用encodeURI显示整个页面

时间:2010-09-26 05:52:32

标签: google-chrome xss urlencode

您好我正在制作Chrome扩展程序。我将页面作为字符串保存到数据库,然后以dataURI方案打开它,如:

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打开了一个很大的漏洞问题。此时我正在尝试在保存原始页面时考虑白名单标签......还有其他方法吗?

1 个答案:

答案 0 :(得分:0)

我不确定http://X/你的意思,但是如果想要复制网站来保留它的来源(即你提供的代码就像从http://X/下载的那样运行),那么我恐怕使用标准DOM方法是不可能的(这将是一个绕过同源安全策略的安全漏洞)。

如果您想安全地运行第三方源代码,请使用:

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

您可以修改源并在其中插入<base href="http://X/">以使相对URL正常工作。