使用 target=”_blank” 时保护您的用户免受恶意网站的侵害。
使用方法
通常,当从我们的网站链接到外部资源时,我们习惯于target="_blank"
在新选项卡或窗口中打开链接页面。但是有一个我们应该注意的安全风险。新标签通过 获得对链接页面(即我们的网站)的有限访问权限window.opener
,然后它可以使用它来更改链接页面的 URL window.opener.location
(这称为禁忌)。
如果外部资源不可信、可能被黑客入侵、域名多年来改变了所有者等,这可能是一个问题。无法保证第三方资源,无论多么可信,都可以真正信任我们的用户的安全,我们作为开发人员,应该始终意识到这种风险。
<!-- Bad: susceptible to tabnabbing -->
<a href="https://externalresource.com/some-page" target="_blank">
External resource
</a>
<!-- Good: new tab cannot cause problems -->
<a
href="https://externalresource.com/some-page"
target="_blank"
rel="noopener noreferrer"
>
External resource
</a>
为了防止在新选项卡中打开的链接造成任何麻烦,我们应该始终将rel="noopener noreferrer"
属性添加到我们所有的target="_blank"
链接中。