内部链接用target="_blank"新开标签页时是否需加rel="noopener noreferrer"?
链接target与rel属性的安全使用指南
外部链接(跳转到本站以外的网站)
- 要是你用
target="_blank"让链接在新标签页打开,一定要同时加上rel="noopener noreferrer"- 为啥?不加的话,新打开的外部页面能通过
window.opener拿到原页面的控制权,搞些钓鱼、篡改原页面内容的小动作;noopener直接切断这种控制权,noreferrer还能防止原页面的referrer信息被传到外部网站,进一步降低风险
- 为啥?不加的话,新打开的外部页面能通过
内部链接(本站域名下的链接)
- 要是就在当前标签页打开(不用
target="_blank"):完全不用加rel属性,正常写<a href="/xxx">链接</a>就行 - 要是得用
target="_blank"在新标签页打开内部链接:- 从安全角度说,一般不需要加
rel="noopener noreferrer"——毕竟同域的页面本来就有互相操作的权限,加了反而会限制正常的站内交互 - 只有一种例外:如果链接指向的是站内不可信页面(比如用户自己发的内容里的链接,虽然同域但内容没经过审核),这时候可以加
rel="noopener",切断它对原页面的控制权,防止恶意操作
- 从安全角度说,一般不需要加
给你那张图表的完善建议
右侧分支可以按这个逻辑补全:
- 先判断:是不是外部链接?
- 是 → 要不要用
target="_blank"?- 是 → 配置
target="_blank"+rel="noopener noreferrer" - 否 → 不用加额外属性
- 是 → 配置
- 否 → 要不要用
target="_blank"?- 是 → 可信同域页面:无需rel属性;不可信同域页面:加
rel="noopener" - 否 → 不用加额外属性
- 是 → 可信同域页面:无需rel属性;不可信同域页面:加
- 是 → 要不要用
内容的提问来源于stack exchange,提问作者Takeshi Tokugawa YD
相关产品推荐
相关产品推荐

