网站在新标签页中访问现有标签页时如何重定向

时间:2018-08-14 10:28:35

标签: javascript html redirect

我正在尝试在新标签中的Course Report中打开一个页面。通常我会这样做,如下:

<a href="https://www.coursereport.com/schools/flatiron-school" target="_blank">https://www.coursereport.com/schools/flatiron-school</a>

但是课程报告做得有些奇怪。如果我使用该链接,则它:

  • 简短地正确打开选项卡
  • 该标签页关闭
  • 原始标签(我点击了链接)重定向到课程报告

我对

感兴趣
  • 课程报告如何实现这一目标(一个新标签可以对引用标签具有如此多的控制权似乎很糟糕)
  • 我可以采取哪些措施来防止这种情况并获得默认行为。

我似乎无法直接在stackoverflow中进行复制,但这是一个HackMD文档,您可以在其中查看行为https://hackmd.io/s/Hy1Ln7g8X

2 个答案:

答案 0 :(得分:2)

再现行为

因此,您可以通过创建2个文件来重现行为:

1.html

<a href="2.html" target="_blank">Go to second page</a>

2.html

<script>
window.opener.location="about:blank";
window.close();
</script>

从目标页面重写源选项卡可用作reverse tabnabbing,这很危险。

  

反向Tabnabbing是一种攻击,其中从目标页面链接的页面能够重写该页面,例如,将其替换为网络钓鱼站点。由于用户最初位于正确的页面上,因此他们不太可能注意到它已更改为网络钓鱼站点,尤其是该站点看起来与目标站点相同。

预防行为

根据window.opener的文档所述,您可以使用属性来阻止此行为,但这仅在某些浏览器(Firefox 52 +,Chrome 49 +,Opera 36+, Safari 10.1 +):

  

some browsers中,原始锚标记上的rel="noopener"属性将阻止设置window.opener引用。

<a href="2.html" target="_blank" rel="noopener">Go to second page</a>

我还发现this page关于rel=noopener,其中也提到了旧版浏览器的可能解决方案:

  

对于较旧的浏览器,您可以使用rel=noreferrer来禁用Referer HTTP标头,或者使用以下JavaScript解决方法(可能触发弹出窗口阻止程序):

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

您可以为rel属性组合值,例如rel="noreferrer noopener"

答案 1 :(得分:0)

您的Javascript代码中的Body上有一个click事件。我认为这就是问题。