HTML的a标签rel安全属性怎么配

冬瑶酱_8177

冬瑶酱_8177

2026-08-22

164人浏览

原创

rel="noopener noreferrer"必须与target="_blank"配合使用才生效,单独添加会被浏览器忽略;它仅在创建新浏览上下文时切断opener引用并阻止referer泄露,缺一不可且须小写无空格。

html的a标签rel安全属性怎么配

rel="noopener noreferrer"必须和target="_blank"一起写才生效

单独加rel="noopener noreferrer"但没配target="_blank",浏览器直接忽略——它只在创建新浏览上下文时起作用。常见错误是:CMS自动给外链加target="_blank",但服务端模板或富文本导出时漏掉rel,上线后就成了高危漏洞。

必须同时满足两个条件:target值为"_blank"(不能是"blank"、"_new"等非法值),且rel属性显式声明为"noopener noreferrer"。Chrome 88+虽默认隐式启用noopener,但 Safari 和 Firefox 仍需手动写,不能依赖。

  • target="_self"或target="_parent"上硬塞rel="noopener"完全无效
  • 写成rel="no-opener"或rel="NOOPENER"——拼错或大小写错误就彻底失效
  • rel="noreferrer"在旧版 Safari(≤12.0)中不保证window.opener === null,不能替代noopener

怎么批量给已有HTML补上安全rel属性

手动改每个链接容易漏,尤其在评论区、富文本输出、Markdown渲染等动态场景。推荐用脚本一次性扫描并修正,但必须加域名判断逻辑——只对跨域外链加,否则会影响内部跳转。

JavaScript 示例(运行于页面加载后):

html-deploy
html-deploy

使用 htmlcode.fun 将 HTML 内容或文件部署到网页,适用于用户要求“部署到网页”“托管此 HTML”“生成此前端...的实时链接”等场景。

下载
document.querySelectorAll('a[href]').forEach(a => {
  try {
    const url = new URL(a.href, location.href);
    if (url.origin !== location.origin && a.target === '_blank') {
      a.rel = (a.rel ? a.rel + ' ' : '') + 'noopener noreferrer';
    }
  } catch (e) {
    // href 无法解析(如 mailto:、tel:)则跳过
  }
});
  • 构建工具(Vite/Webpack)可用 PostHTML 插件,在 HTML 构建阶段自动注入
  • Next.js/Nuxt 等 SSR 项目,应封装<externallink></externallink>组件,强制带rel="noopener noreferrer"
  • Markdown 渲染器(如 remark)需配置自定义 render hook,拦截a标签并补rel

富文本编辑器和CMS里最容易漏掉rel的地方

风险不在手写 HTML,而在用户可输入、系统自动生成的环节。CKEditor、TinyMCE 导出的 HTML 默认不加rel;WordPress、Ghost 等 CMS 的文章内嵌外链、评论区自动识别链接,几乎从不自动补全。

典型漏点:

  • 用户粘贴@#@#@#@#@#@#@#@#@#@0,后端没做清洗就直接入库渲染
  • 模板引擎(Jinja/Twig)拼接链接:@#@#@#@#@#@#@#@#@#@1,忘了加rel
  • 已存在rel="nofollow"的链接,直接覆盖成rel="noopener",丢失原有 SEO 语义

这类问题 DevTools 不报错,Lighthouse 也未必扫全,得靠正则匹配:/@#@#@#@#@#@#@#@#@#@2模拟点击

  • 必须用 JS 控制:配合location.replace()跳转 + 新窗口监听,或改用postMessage通信替代window.opener
  • 最常被忽略的是:所有window.open(url, "_blank")调用,只要目标不可信,就等于主动交出原页面控制权。

    前端入门到VUE实战笔记:立即使用
    在学习笔记中,你将探索 前端 的入门与实战技巧!

    相关文章

    HTML速学教程(入门课程)
    HTML速学教程(入门课程)

    HTML怎么学习?HTML怎么入门?HTML在哪学?HTML怎么学才快?不用担心,这里为大家提供了HTML速学教程(入门课程),有需要的小伙伴保存下载就能学习啦!

    下载

    相关标签:

    html教程 html a标签

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

    相关专题

    更多
    html版权符号
    html版权符号

    html版权符号是“©”,可以在html源文件中直接输入或者从word中复制粘贴过来,php中文网还为大家带来html的相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

    2023.06.14

    5455

    7

    html在线编辑器
    html在线编辑器

    html在线编辑器是用于在线编辑的工具,编辑的内容是基于HTML的文档。它经常被应用于留言板留言、论坛发贴、Blog编写日志或等需要用户输入普通HTML的地方,是Web应用的常用模块之一。php中文网为大家带来了html在线编辑器的相关教程、以及相关文章等内容,供大家免费下载使用。

    2023.06.21

    3132

    4

    html网页制作
    html网页制作

    html网页制作是指使用超文本标记语言来设计和创建网页的过程,html是一种标记语言,它使用标记来描述文档结构和语义,并定义了网页中的各种元素和内容的呈现方式。本专题为大家提供html网页制作的相关的文章、下载、课程内容,供大家免费下载体验。

    2023.07.31

    2790

    5

    html空格
    html空格

    html空格是一种用于在网页中添加间隔和对齐文本的特殊字符,被用于在网页中插入额外的空间,以改变元素之间的排列和对齐方式。本专题为大家提供html空格的相关的文章、下载、课程内容,供大家免费下载体验。

    2023.08.01

    2819

    5

    html是什么
    html是什么

    HTML是一种标准标记语言,用于创建和呈现网页的结构和内容,是互联网发展的基石,为网页开发提供了丰富的功能和灵活性。本专题为大家提供html相关的各种文章、以及下载和课程。

    2023.08.11

    4699

    6

    html字体大小怎么设置
    html字体大小怎么设置

    在网页设计中,字体大小的选择是至关重要的。合理的字体大小不仅可以提升网页的可读性,还能够影响用户对网页整体布局的感知。php中文网将介绍一些常用的方法和技巧,帮助您在HTML中设置合适的字体大小。

    2023.08.11

    2781

    3

    html转txt
    html转txt

    html转txt的方法有使用文本编辑器、使用在线转换工具和使用Python编程。本专题为大家提供html转txt相关的文章、下载、课程内容,供大家免费下载体验。

    2023.08.31

    2569

    3

    html文本框代码怎么写
    html文本框代码怎么写

    html文本框代码:1、单行文本框【<input type="text" style="height:..;width:..;" />】;2、多行文本框【textarea style=";height:;"></textare】。

    2023.09.01

    2308

    6

    HTML嵌入CSS样式的方法
    HTML嵌入CSS样式的方法

    HTML嵌入CSS样式的方法有内联样式、内部样式表和外部样式表。本专题为大家提供CSS样式相关的文章、下载、课程内容,供大家免费下载体验。

    2023.09.20

    2328

    5

    热门下载

    更多
    网站特效
    /
    网站源码
    /
    网站素材
    /
    前端模板

    精品课程

    更多
    相关推荐
    /
    热门推荐
    /
    最新课程
    HTML教程
    HTML教程

    共500课时 | 10.3万人学习

    HTML 基础教程
    HTML 基础教程

    共45课时 | 20.4万人学习

    GDB 17.2 官方文档集合
    GDB 17.2 官方文档集合

    共0课时 | 0人学习