[FAQ] a 链接的 rel=noopener 含义

HTML中的 <a> 标签的 rel 属性用于定义与链接文档的关系。

当 rel="noopener" 被使用时,它表示链接的目标文档不应该拥有对原始文档的任何引用能力。

具体来说,这意呈现在以下几点:

 

1 . 安全增强:

当一个链接在一个新的浏览上下文中打开(例如一个新的标签页或窗口),rel="noopener" 可以防止目标页面通过 window.opener 属性访问或操纵打开它的窗口。

这有助于防止一些类型的攻击,如利用 window.opener 进行的潜在安全漏洞。

 

2. 资源隔离:

目标页面不能通过脚本访问打开它的窗口,这意味着它不能改变原始页面的状态或者读取其任何数据,从而增加了用户的安全性和隐私。

 

3.兼容性:

使用 rel="noopener" 时,即使链接的目标被设置为 _blank,也会有默认的 rel="noopener" 行为。这保证了即使在没有显式设置 rel 属性的情况下,也能获得基本的安全保护。

 

然而,值得注意的是,rel="noopener" 并不阻止 referrer header 的发送,如果需要进一步保护隐私,可以结合使用 rel="noreferrer"

noreferrer会阻止referrer header的发送,这样目标页面就无法知道是从哪个页面链接过来的。

因此,为了同时达到安全和隐私保护的目的,通常会看到rel="noopener noreferrer"这样的组合使用。

 

Link:https://www.cnblogs.com/farwish/p/18289049

posted on 2024-07-07 22:36  ercom  阅读(2)  评论(0编辑  收藏  举报