链接目标网页可以通过window.opener访问入口页面window信息,从而被利用将入口页面恶意跳转。

<!--入口页面-->
<a href="test.html" target="_blank">进入</a>
<!--test.html-->
<script>window.opener.location.href="https://gotomorrow.dev";</script>

为了防止window.opener被滥用,在使用targrt=_blank时需要加上rel=noopener

<a href="test.html" target="_blank" rel="noopener">

旧版本的浏览器不支持rel=noopener,你可以使用rel=noreferrer,这也会禁用Referer HTTP标头。

<a href="test.html" target="_blank" rel="noopener norefferrer" >

在JavaScript中阻止window.opener:

var otherWindow = window.open();
otherWindow.opener = null;
otherWindow.location = url;

About rel=noopener