与target =“ _ blank”和rel =“ noopener noreferrer”的链接仍然容易受到攻击?


108

我看到有人建议,只要有人使用target="_blank"链接在其他窗口中打开它,就应该放rel="noopener noreferrer"。我不知道这如何阻止我在Chrome中使用开发人员工具,并删除rel属性。然后点击链接...

这是保持漏洞的简便方法吗?


您认为它会(或在这种情况下不会)授予哪种保护?

我当时正在考虑可以操纵DOM的浏览器扩展。
Miro J.

1
Firefox 79会自动执行此操作(noopener至少,但如下所述,这样做noreferrer是多余的):hacks.mozilla.org/2020/07/firefox-79
Kev

Answers:


125

您可能会误解该漏洞。您可以在此处了解更多信息:https : //www.jitbit.com/alexblog/256-targetblank---the-most-underestimated-vulnerability-ever/

从本质上讲,添加rel="noopener noreferrer"链接可以保护您网站的用户免遭您链接的网站潜在地劫持浏览器(通过流氓JS)的侵害。

您在询问是否要通过开发人员工具删除该属性-这样只会使(篡改该属性的人)容易受到该漏洞的威胁。


9
noopener noreferrer由于noreferrer包含的功能,因此是多余的noopenerhtml.spec.whatwg.org/multipage/links.html#link-type-noreferrer
mfluehr

1
如果多余,为什么Visual Studio Code同时需要两者?
muhe

66

与链接target="_blank"对他们是脆弱的,以具有参照网页在后台被换出,而用户的注意力被新打开的标签转移。这被称为反向跳动

恶意流示例

引荐页存储在中window.opener,恶意站点可以通过以下方式对此进行修改:

if (window.opener) {
   window.opener.location = "https://phish.example.com";
}

添加rel="noopener noreferrer"可修复所有主要浏览器中的此漏洞。

请注意,理论上您可以通过操纵来删除rel 客户端...但是您为什么要这么做?您要做的只是故意使自己容易受到攻击。

其他访问同一网站(并且无需修改自己的客户端代码)的用户仍然可以安全使用,因为服务器仍可以使用rel="noopener noreferrer"。您将其删除仅适用于您。


只是徘徊,rel =“ noopener noreferrer”对我的内部应用程序有什么好处?它打开相同的内部域,在相同的内部网络中,它引用某个外部站点的机会为0。并且,如果仍然有好处,为什么不将其添加到所有链接中呢?
Dainius

3

定位标记rel=”noopener”rel=”noreferrer”属性可以提高网站的安全性,但是有些人希望忽略它们,因为他们认为这会影响网站搜索引擎的优化,但这只是一个神话。它可以保护您的网站访问者的机密性,并通过传播恶意代码来阻止外部网站。


8
如果您可以引用“神话”声明的某些来源,那就太好了。特别是noreferrer部分。
Miro J.

1

关于Lighthouse最佳做法审核报告:

在任何外部链接上添加rel="noopener"rel="noreferrer",以提高性能并防止安全漏洞。

通常,使用时target="_blank",请始终添加rel="noopener"rel="noreferrer"

例如:

<a href="https://www.kaiostech.com/store/" target="_blank" rel="noreferrer">
  KaiStore
</a>
  • rel="noopener"阻止新页面访问window.opener属性,并确保它在单独的进程中运行。
  • rel="noreferrer"具有相同的效果,但是还可以防止将Referer标头发送到新页面。

有关更多信息,请参见官方文档


可以同时添加两者吗?
祝福

-1

如果开发者控制台显示有关的警告noopener noreferrer,请确保同时添加noopenernoreferrer。链接应如下所示:

<a href="www.google.com" target="_blank" rel="noopener noreferrer" />

这似乎并未解决所提出的问题。
TylerH
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.