为什么说window.opener可以实现恶意跳转?

2019-09-19202次阅读其它

如果当前窗口是由另一个窗口(例如:通过window.open方式或者a标签中的target="_blank"属性)打开的, window.opener保留了那个窗口window对象的引用。 如果当前窗口不是由其他窗口打开的, 则该属性返回null。

为什么说window.opener可以实现恶意跳转?

例如:当带有target="_blank"的a标签打开的新标签页面可以通过window.opener.location=来将来源页面跳转到钓鱼页面。又或者说当点击友情链接新开窗口进入他的网站后,他的网页可以利用window.opener.location.href="他的网址" 把你的网页也跳转到他的网站内的页面(当然也可以是其他页面)。这就相当于你好心借钱给别人,但到最后你的全部身家都被他占了去!

给a标签增加rel=noopener或者是rel=noreferrer可以阻止这一行为

noopener是最合适的属性,不过noreferrer同样也包含有noopener的功效,noreferrer、noopener同时加是多余的。
rel="opener" 是功能恰好相反的选项,因为其实除了Chrome,最新版的Safari和Firefox已经都为a链接默认采用noopener模式了,真需要opener属性的时候可以使用rel="opener"开启。

上一篇: 关于箭头函数的一些说法  下一篇: js中onkeydown回车触发事件的几种方法  

为什么说window.opener可以实现恶意跳转?相关文章