与 target="_blank" 和 rel="noopener noreferrer" 的链接仍然容易受到攻击?

新手上路,请多包涵

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

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

原文由 Miro J. 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 933
2 个回答

您可能误解了该漏洞。你可以在这里阅读更多相关信息: https ://www.jitbit.com/alexblog/256-targetblank—the-most-underestimated-vulnerability-ever/

本质上,将 rel="noopener noreferrer" 添加到链接可以保护您网站的用户免受您 链接 的网站可能劫持浏览器(通过流氓 JS)。

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

2021 年更新: 所有当前版本的主要浏览器现在自动对任何 target="_blank" 链接使用 rel="noopener" 的行为,从而消除此问题。在 chromestatus.com 上查看更多信息。

原文由 Jon Uleis 发布,翻译遵循 CC BY-SA 4.0 许可协议

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

示例恶意流

引用页面存储在 window.opener 中,恶意站点可以通过以下方式修改它:

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

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

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

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

原文由 Obsidian Age 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题