使

使用 target=_blank 的恶意方式 AWS 安全 LIVE!

2025-06-10

恶意使用 target=_blank

AWS 安全上线!

恶意方式的_blank
HTML 链接是将您的网页连接在一起并构成网站的工具。我们将讨论如何利用这个强大的工具来攻击您的网站(甚至可能攻击您亲爱的用户)。这是许多网页设计师/开发人员所没有意识到的。

趣味知识:网站是一系列网页的集合,这些网页通过 URL链接在一起,并托管在服务器上。顾名思义,链接就是将您的网页链接在一起,这也意味着,没有网页链接就没有网站!我们只是拥有大量的网页而已,呵呵!

那个恶意的故事

无论如何,今天的主题不是网站,而是网页链接。当你target="_blank"在你的<a> (或其他)链接上使用 时,浏览器会被告知旧页面或引用页面,这听起来没问题吧?不对!等等,浏览器还可以控制引用页面!问题就在这里,浏览器还提供了一个window.opener对象,允许你与引用页面进行部分交互。这会将网站暴露给以下控件:

  • 运行与您的网页相同的进程,运行一些可能会影响您页面性能的 JavaScript。
  • 部分控制您的网页(用户打开其他页面的页面)。通过将其重定向到恶意 URL。

太可怕了,休!

我知道此时你可能会问,那我该如何避免这种情况,其实很简单!rel属性帮了大忙!怎么做到的?是的,我们当然会讨论这个问题,但在此之前,我们先来更详细地讲解一下攻击者如何滥用你的链接。

一些用例

  • 您将用户引导至外部网页
  • 攻击者在新页面上使用一些 JavaScript,将引用页面的位置更改为与前一个网页完全一样的钓鱼页面,通过window.opener.location
  • 用户回来后只会看到相同的页面,因为它和新的钓鱼页面没有明显区别User continues interaction === attacker gains access

解决方案

好的,回到“我该如何防止这种情况发生?”这个问题的解决方案是在你的标签上使用rel="noopener",这会阻止浏览器将你宝贵的信息带到陌生的网站上。rel="noreferrer"<a href ...

  • rel="noopener",告诉浏览器不要提供有关您的网站的信息
  • rel="noreferrer" 我像我兄弟一样,但我也阻止了 HTTPReferrer发送到新页面的标题。

安全使用

为确保一切安全,请始终使用noopenernoreferrer值,因为据报道某些浏览器不支持noopener,但所有浏览器都倾向于支持noreferrer

例子

<a rel="noopener noreferrer" href="https://lyty.dev/html/html-link.html" target="_blank">HTML Links</a>

您可以在本页第一段的链接中预览其工作原理。请随意在您的浏览器中检查并确认操作。

一切顺利!

鏂囩珷鏉ユ簮锛�https://dev.to/olasheni/using-target-blank-the-malicious-way-3bif
PREV
Sass 与 Scss
NEXT
如何用 REACT 制作一个滴答作响的时钟