1、为什么要加这个:
超链接 target="_blank" 要增加 rel="nofollow noopener noreferrer" 来堵住钓鱼安全漏洞。
如果你在链接上使用 target="_blank"属性,并且不加上rel="noopener"属性,那么你就让用户暴露在一个非常简单的钓鱼攻击之下。
2、rel="noopener noreferrer"详细说明
当用户浏览一个页面,点击一个a标签超链接,如下:
Test1.html中有一个跳转链接:
<a href="https://www.xinshouzhanzhang.com/test2.html" target="_blank">跳转到一个新页面</a>
Test2.html:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
<p align="center">这是一个测试网站</p>
<script>
window.opener.location = "http://www.cnblogs.com/";
</script>
</body>
</html>
这是由于当用户点击了网站A中带有target="_blank"属性的超链接后,浏览器会单独新建一个标签页来显示该链接所指向的内容。
但是请注意,在这一瞬间,浏览器会允许新建的标签页通过一个名为"window.opener"的浏览器API来与网站A进行短暂通信。
此时,攻击者就可以将恶意代码嵌入在新打开的网站B中,然后检测用户是从哪一个网站跳转过来的,最后再利用window.opener接口来迫使原始网页A打开一个新的URL地址。
在新打开的页面中,通过window.opener可以获取到源页面的部分控制权,即使新打开的页面是跨域也可以获取部分控制权。
当a标签中加入了rel="noopener noreferrer"属性,就会window.opener会为null。
3、补充:
rel="noopener noreferrer"
noreferrer是由于Firefox不支持noopener而添加的
网友评论