本
文
摘
要
`target="_blank"`是HTML中的一个属性值,用于在超链接(`<a>`标签)中。
1. 主要作用

- 当设置了`target="_blank"`后,点击该链接时,会在新的浏览器标签页或者新的浏览器窗口(取决于浏览器的设置)中打开链接指向的目标页面。例如:
<a href="https://www.qunapu.com" target="_blank">点击这里打开新页面</a>
2. 相关安全和用户体验考虑
- 安全风险:从安全角度来看,在新标签页打开外部链接时,如果不注意设置,可能会存在安全风险。例如,新打开的页面可能会通过`window.opener`等JavaScript方法访问原始页面的某些信息,存在跨站点脚本攻击(XSS)的潜在风险。为了降低这种风险,可以在新页面中设置`rel="noopener noreferrer"`属性,像这样:
<a href="https://www.qunapu.com" target="_blank" rel="noopener noreferrer">点击这里打开新页面</a>
- 用户体验:从用户体验方面考虑,过度使用`target="_blank"`可能会导致打开过多的标签页,使用户的浏览器标签栏变得杂乱。所以应该谨慎使用,仅在确实需要在新标签页打开链接的情况下才使用该属性。
在新页面中设置`rel="noopener noreferrer"`属性主要有以下目的:
一、防范安全风险
1. 防止跨站点脚本攻击(XSS)
- 当一个链接使用`target = "_blank"`在新标签页打开时,新打开的页面(如果是恶意页面)可以通过`window.opener`对象访问原始页面的`window`对象。这意味着恶意页面可能获取原始页面的敏感信息,如用户的登录状态、个人资料数据等,从而引发跨站点脚本攻击。
- 例如,如果原始页面包含用户的登录信息(如用户名、密码等存储在JavaScript变量中),恶意的新页面可以通过`window.opener`访问这些信息并发送给攻击者的服务器。
- 设置`rel="noopener"`可以阻止新页面访问`window.opener`,从而切断这种潜在的安全风险途径。
2. 防止Referrer泄露
- 当新页面打开时,如果没有`rel="noreferrer"`,新页面的`Referrer`头部会包含原始页面的URL。这可能会泄露一些敏感信息,比如原始页面的内部结构或者特定的路径信息。
- 对于一些企业内部的敏感页面或者需要保护隐私的场景,防止`Referrer`泄露是很重要的。设置`rel="noreferrer"`可以确保新页面的`Referrer`头部不包含原始页面的URL。
二、遵循安全最佳实践
1. 提高页面安全性
- 在现代Web开发中,安全是至关重要的。遵循安全最佳实践,如设置`rel="noopener noreferrer"`,有助于确保整个Web应用的安全性。这不仅保护了用户的数据安全,也有助于提高网站的信誉。
- 许多安全标准和指南都推荐使用这些属性来防止与在新标签页打开链接相关的潜在安全风险。例如,OWASP(开放式Web应用程序安全项目)的安全建议中就包含了对这种安全设置的强调。
