target=“_blank“

对于target="_blank",我想补充一些信息。使用target="_blank"打开链接时,可以采取一些额外的措施来提高安全性和用户体验,包括:

  1. 添加rel="noopener"属性:在链接中同时添加rel="noopener"属性可以防止被打开的新窗口对原始页面进行操作(例如通过 window.opener 进行恶意操作)。
html 复制代码
<a href="https://www.example.com" target="_blank" rel="noopener">点击这里</a>
  1. 添加rel="noreferrer"属性:在链接中添加rel="noreferrer"属性可以在新窗口中打开链接时,不传递来源信息,提高用户隐私保护。
html 复制代码
<a href="https://www.example.com" target="_blank" rel="noreferrer">点击这里</a>
  1. 使用JavaScript控制新窗口行为:可以通过JavaScript脚本实现在当前窗口打开链接而不是新的窗口,以避免target="_blank"可能带来的问题。
html 复制代码
<a href="https://www.example.com" onclick="window.location.href='https://www.example.com'; return false;">点击这里</a>

通过以上措施,可以更安全地使用target="_blank"打开链接,并提升用户体验。

存在问题:

  1. 安全隐患:新打开的窗口可以通过window.opener获取到来源页面的window对象即使跨域也可以。某些属性的访问被拦截,是因为跨域安全策略的限制。 但是,比如修改window.opener.location的值,指向另外一个地址,这样新窗口有可能会把原来的网页地址改了并进行页面伪装来欺骗用户。
  2. 新打开的窗口与原页面窗口共用一个进程,若是新页面有性能不好的代码也会影响原页面

解决方案:

  1. 尽量不用target="_blank"
  2. 如果一定要用,需要加上rel="noopener"或者rel="noreferrer"。这样新窗口的window.openner就是null了,而且会让新窗口运行在独立的进程里,不会拖累原来页面的进程。(不过,有些浏览器对性能做了优化,即使不加这个属性,新窗口也会在独立进程打开。不过为了安全考虑,还是加上吧。)
相关推荐
Jmyd01233 小时前
Web端3D营销展厅技术实现路径:从素材上云到线索回流的数据链路
前端·3d·性能优化·三维数字化
砚凝霜3 小时前
【软考信息安全】第二十二章 Web服务器安全分析与增强——Apache与IIS
服务器·前端·安全
u0111026755 小时前
JPG、PNG、WebP 怎么选?按透明度、体积和使用场景做判断
前端·javascript·vue.js·图像处理·ai作画
jerrywus5 小时前
让 AI 写完代码后交一份报告:我改造了 answer-me-with-html
前端·claude·cursor
派小心.6 小时前
小程序分享链路中来源参数的传递校验
大数据·前端·数据库·人工智能·小程序·数据分析
hhb_6186 小时前
一键生成数据看板,ECharts实战演示
前端·javascript·echarts
Java后端的Ai之路6 小时前
08_React组件API
前端·react.js·前端框架
小马不起床6 小时前
零基础玩转 FastAPI_09:前端基础工程构建
前端·状态模式·fastapi
风骏时光牛马7 小时前
用户管理模块接口开发
前端
彭亚川Allen8 小时前
从零手搓 RAG 之检索全流程,给大模型接上自己的知识库
前端·后端·ai编程