gpt4 book ai didi

javascript - 使用 window.open 但阻止使用 window.opener

转载 作者:行者123 更新时间:2023-12-02 22:52:33 26 4
gpt4 key购买 nike

不久前我遇到了一个interesting security hole

<a href="http://someurl.here" target="_blank">Link</a>

看起来足够无害,但有一个漏洞,因为默认情况下,正在打开的页面允许打开的页面通过 window.opener 回调到它。有一些限制,跨域,但仍然有一些恶作剧可以做

window.opener.location = 'http://gotcha.badstuff';

现在,HTML 有一个解决方法

<a href="http://someurl.here" target="_blank" rel="noopener noreferrer">Link</a>

这会阻止将 window.opener 传递给新窗口。这对于 HTML 来说很好,但是如果您使用 window.open 呢?

<button type="button" onclick="window.open('http://someurl.here', '_blank');">
Click Me
</button>

如何阻止使用在此处传递的 window.opener

最佳答案

现在调用 window.open() supports功能“noopener”。
因此调用 window.open('https://www.your.url','_blank','noopener') 应该打开新窗口/带有 null window.opener 的选项卡。

我无法找到可靠的支持浏览器(和版本)列表 - MDN 状态 here那个

This is supported in modern browsers including Chrome, and Firefox 52+.

根据我的实验,我发现它适用于:

  • Chrome 61
  • 火狐浏览器 56
  • Safari 11.1(感谢 Jiayi Hu)

但不适用于:

  • IE 11.608
  • 边缘 40

(所有测试均在运行 Windows 10 的 PC 上进行...)

为了向后兼容,最好将其与 t3__rry's answer 结合起来。 .

关于javascript - 使用 window.open 但阻止使用 window.opener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40593632/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com