【发布时间】:2010-09-13 13:48:06
【问题描述】:
我创建了一个工具,供一家相当受欢迎的音乐零售商使用。
该工具提供了增强的搜索功能(透明的 last.fm 结果,没有广告,没有跛脚,没有什么令人毛骨悚然的东西),我发现显示搜索的最有用和不显眼的方式是使用备受诟病的 iframe 作为工具栏.这允许用户加载搜索而不会窃取用户的注意力。
我不是特别喜欢 iframe,我认为添加“关闭此框架”(ala Google 图片搜索)链接让用户快速轻松地重新获得对浏览器的控制权是微不足道的。
但与 google 不同,我不知道 iframe 中内容的位置是什么(仅知道它开始的位置,通过 src)。
所以现在我发现自己陷入了 XSS 的世界以及所有与安全相关的问题。
使用 Javascript,我添加了“后退”和“前进”按钮以及从父级链接调用的历史对象(当用户进行搜索时,结果会加载到 iframe 中,因此后退按钮允许他们返回在他们完成使用/阅读搜索结果后转到主站点。
有没有办法调用 iframe 中的当前位置并将页面(现在没有框架)重新加载到该位置?
我检查了 PHP $GLOBAL/$_SERVER 变量,看看我可能会走运。我知道存在安全问题,但我看不出这个特定函数与 history.back() 有什么不同,浏览器在没有“通知”我的父框架的情况下自行调用。
我知道我可以从 iframe 本身检索 src 位置,但这当然假定用户没有导航到此页面之外,如果他们这样做了,他们不介意丢失当前位置并被重定向回页面最初由框架调用(...啊...)。
似乎框架旨在窃取窗口,无法优雅地“突破”并保持用户会话的完整性。
难怪人们讨厌他们。 :)
【问题讨论】:
-
我不确定我是否理解正确。您可以控制主文档,在 iframe 中显示外部文档,并且希望主文档将 iframe 中的任何内容加载为新的主文档?而且iframe中的文档没有任何配合?
标签: javascript html xss