素材牛VIP会员
网站内的 iframe 会对网站构成威胁吗?该如何防止?
 邹***b  分类:Html5  人气:1153  回帖:5  发布于6年前 收藏

如何防止来自iframe 内未知网站的安全威胁?
如果有威胁,该如何防止?
例如新浪微博的站内应用,他们是如何防止 iframe 内的网站获得用户信息的?

希望能得到你们的解答!谢谢!

讨论这个帖子(5)垃圾回帖将一律封号处理……

Lv5 码农
li***56 移动开发工程师 6年前#1

不同源的情况下,iframe 顶多获取外部页面的 URL,其他东西都获取不了。所以要确保 URL 里面别写太隐私的东西。

Lv3 码奴
空***子 职业无 6年前#2

在内容提供方的服务器没有做出明确授权的条件下,javascript的跨域请求是所有浏览器所禁止的,没有任何商量的余地。

这一点上和iframe里外并没有任何关系。外边污染里边,里边窥探外边,或iframe之间交叉产生关联……只要跨域,都不允许。

所有的安全说来说去就基于这一条。iframe里外两个网页,其实在浏览器的安全系统中,与两个标签页并列,并没有什么区别。

Lv5 码农
陈***6 软件测试工程师 6年前#3

就我目前的经验来看,iframe只要是跨域,你是拿它没办法的,连onclick事件都绑定不了,别说操作父页面DOM了,当然如果没有跨域,iframe是完全可以操作父页面or子页面的

Lv5 码农
诸***1 移动开发工程师 6年前#4

@沙渺 还是存在威胁的,iframe的窗口可以替换顶级的窗口路径,从而实现跳转页面,造成钓鱼攻击的危险。

在HTML5标准之前,没有很好的解决办法。
HTML5定义了iframe的沙盒属性,可以选择性白名单iframe的功能。
具体实现:http://www.html5rocks.com/en/tutorials/security/sandboxed-iframes/

Lv5 码农
雪***0 移动开发工程师 6年前#5

浏览器不是有同域限制的么?

如果两个页面的一级域名不同,那iframe里的页面怎么能控制外部页面呢?

当然,如果两个页面只是二级域名不同,比如a.segmentfault.com和b.segmentfault.com之间,可以通过JS将两个页面的document.domain设置为一样的,

document.domain=segmentfault.com;

这样两个页面的JS可以互相调用。这种特性可以用来在一个一级域名下的两个二级域名之间做跨域请求。

但是如果一级域名不一样,是没有直接控制的可能的,浏览器直接就给返回错误了,怎么产生威胁的呢?

 文明上网,理性发言!   😉 阿里云幸运券,戳我领取