我看到有人建议,每当一个人使用target="_blank"在链接中打开它在不同的窗口,他们应该放rel="noopener noreferrer"。我想知道这是如何阻止我在Chrome中使用开发人员工具的,例如,并删除rel属性。然后点击链接…

这是保持脆弱的简单方法吗?


当前回答

浏览器修复

所有主流浏览器都通过更新默认行为来解决这个问题,而不必指定rel属性。阅读更多关于rel=noopener。

Chrome在v88修复了它 Safari在2016年解决了这个问题! Firefox在v52修正了这个问题 新边缘是基于铬,所以固定太

其他回答

锚标记rel= " noopener "或rel= " noreferrer "属性提高了网站的安全性,但有些人想忽略它们,因为他们认为它们会影响他们的网站搜索引擎优化,但这只是一个神话。 它可以保护您的网站受众的机密性,并防止外部网站传播恶意代码。

浏览器修复

所有主流浏览器都通过更新默认行为来解决这个问题,而不必指定rel属性。阅读更多关于rel=noopener。

Chrome在v88修复了它 Safari在2016年解决了这个问题! Firefox在v52修正了这个问题 新边缘是基于铬,所以固定太

你可能误解了这个弱点。你可以在这里阅读更多信息:https://www.jitbit.com/alexblog/256-targetblank---the-most-underestimated-vulnerability-ever/

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

您正在询问通过开发人员工具删除该属性—这只会潜在地将您(篡改属性的人)暴露在漏洞之下。

2021年更新:所有主流浏览器的当前版本现在自动对任何target="_blank"链接使用rel="noopener"的行为,使此问题无效。更多信息请访问chromestatus.com。

带有target="_blank"的链接很容易在用户的注意力被新打开的选项卡转移时,在后台换出推荐页面。这被称为反向tabnapping:

引用页存储在窗口中。一个恶意网站可以通过以下方式修改:

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

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

注意,理论上可以通过操作删除rel客户端…但你为什么要这么做?你所做的一切都是故意让自己容易受到攻击。

访问同一网站的其他用户(并且不修改自己的客户端代码)仍然是安全的,因为服务器仍然会提供rel="noopener noreferrer"。你的撤销只适用于你自己。

如果开发者控制台显示关于noopener noreferrer的警告,请确保在rel中同时添加noopener和noreferrer。link应该如下所示:

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