a标签中target属性为“_blank”时存在安全问题

Posted jinqi520

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了a标签中target属性为“_blank”时存在安全问题相关的知识,希望对你有一定的参考价值。

今天看到一个比较有意思的洞,虽然不够严重,但是却普遍存在各大src中

熟悉js的朋友都应该知道当我们在调用window下的open方法创建一个新窗口的同时,我们可以获得一个创建窗口的opener句柄,但你也许没注意到,通过target="_blank"点开的窗口活着标签页,子窗口也能捕获opener句柄,通过这个句柄,子窗口可以访问到父窗口的一些属性,虽然很有限,但是我们却可以修改父窗口的页面地址,让父窗口显示指定的页面(引用:https://blog.csdn.net/chinashanzhang/article/details/88537581)

 

复现下

准备a页面:

技术图片

 

里面仅有一个a标签,点击后会跳转到b.html(实际场景中b.html一般是放在攻击者服务器中),内容如下:

技术图片

 

 

这样当用户点击a.html中的链接后,会打开一个新的页面b.html,而马上a.html将会跳转到http://www.baidu.com(实际场景中一般是钓鱼网站)

 

修复方法:

在开发中,我们以后在写a标签的时候尽量都在target="_blank"后面添加一句 rel="noopener noreferrer"。

 

以上是关于a标签中target属性为“_blank”时存在安全问题的主要内容,如果未能解决你的问题,请参考以下文章

HTML a 标签的基本用法和常用属性

target的属性

a标签的target属性

关于a标签的target属性

关于a标签的target属性

target='_blank' 安全漏洞