在iframe中创建div

时间:2010-08-17 21:32:45

标签: javascript xss

我无法找到以下问题的解决方案:我想在iframe中显示任何网站,并向此iframe添加元素(div)。 由于浏览器中的跨脚本防止,这似乎是不可能的。

有没有办法做到这一点?

4 个答案:

答案 0 :(得分:1)

如果您实际上没有在iframe中托管域,请执行。你能做的最好的是有一个服务器端代理页面,它复制html并插入div。

答案 1 :(得分:1)

你的目标是什么?

如果您想重新格式化内容或在其页面上运行脚本,那么您可能需要代理并复制html(如建议的那样)

如果您只想在页面中叠加或“插入”某些内容,可以尝试在自己的页面上放置div,并将其位置设置在iframe的顶部。

我必须这样做才能在之前将iframe粘贴到swf文件上。

答案 2 :(得分:0)

跨域脚本编写规则明确禁止此操作。即使你现在找到解决方案,我将来也会关注它,这可能是一个黑客攻击。如果您不在iFrame中拥有/托管域名,则禁止使用。

操纵HTML并提供HTML的代理或外观应用程序可能是可能的,但我无法想象它很容易。

这可能对您没用,但我所知道的唯一认可的方法是使用HTA,因此如果您的应用程序在受信任的环境(如公司内部网或自助服务终端等)中运行,您可以采用HTA方法:http://msdn.microsoft.com/en-us/library/ms536496%28VS.85%29.aspx

个人HTA给了我毛骨悚然。

答案 3 :(得分:0)

如果你能做到这一点,你可以轻松地将任何网页加载到iframe(可能是用户登录的网站)并从中提取内容。

将安全主题放在一边,您的代码还有另一个问题:您需要在iframe的文档中创建元素,而不是当前文档,并再次将其附加到iframe的文档,而不是iframe对象本身:

function addDiv() {
    var doc = myFrame.contentDocument,
        newdiv = doc.createElement("div");
    newdiv.innerHTML = "foo";
    doc.appendChild(newdiv);
}