讲师中心 微信公众号

工具推荐

视频效率加速
Laper
Laper

剧本策划到成片协作

updream

一键生成高质量推广成片

剧云
剧云

中文短剧剧本制作平台

立刻MV
立刻MV

低成本歌曲 MV、视频生成

HTML属性清理的关键细节讲解

夏强吖_8430

夏强吖_8430

发布时间:2026-11-15 09:17:21

|

221人浏览过

|

来源于php中文网

原创

HTML属性清理需保留alt、href、src、data-、role、aria-、type等必需属性以保障功能与合规,同时优先过滤on*事件处理器、javascript:伪协议、未限制的style等高危项,并避免正则误删、忽略Shadow DOM及自定义元素专有属性。

html属性清理的关键细节讲解

HTML 属性清理不是“删掉所有不认识的属性”就完事,而是有明确目标:移除潜在安全隐患(如 onerror、javascript:)、剔除冗余干扰(如过时的 align、border)、保留语义与功能必需项(如 alt、href、role)。盲目清空或一刀切会破坏可访问性、SEO 或交互逻辑。

哪些 HTML 属性必须保留,不能随便删

清理前先确认这些属性是否承担实际功能或合规要求:

  • alt:图片替代文本,影响可访问性和 SEO,空字符串 alt="" 可保留(表示装饰图),但绝不能直接删掉 alt 属性本身
  • href、src、data-*:功能核心,删除即导致链接失效、资源加载失败或 JS 逻辑中断
  • role、aria- 系列(如 aria-label、aria-hidden):直接影响屏幕阅读器行为,清理时需按 WCAG 规则校验,而非简单放行或清除
  • type(在 <input>、<button></button> 中):不设默认为 text 或 submit,可能引发表单意外提交,必须显式保留

哪些属性是高危项,应优先过滤

这些属性常被用于 XSS 注入或绕过 CSP,且现代标准中已废弃或无正当用途:

  • on* 类事件处理器:如 onclick、onmouseover、onload —— 即使内容看似“安全”,也应移除;JS 逻辑应统一收口到外部脚本中
  • javascript: 伪协议:出现在 href 或 src 中(如 href="javascript:alert(1)"),必须剥离,替换为 # 或 void(0)(仅限内部可控场景)
  • style 属性:若清理目标是防样式篡改或统一主题,需限制允许的 CSS 属性子集(如只允 color、font-size),而非全量保留;否则易被用于隐藏恶意内容
  • class 和 id:看似无害,但在富文本编辑器输出或用户投稿场景中,可能被用来 hook 恶意 JS(如 class="js-track-click" 被第三方脚本监听),需按白名单机制控制值范围

使用 DOMPurify 清理时容易忽略的配置点

DOMPurify 是目前最可靠的 HTML 属性清理方案,但默认配置不等于安全配置:

DeepBI DHTML 页面生成器
DeepBI DHTML 页面生成器

生成可在 deepbi 沙箱 iframe 内运行或作为独立文件运行的交互式 HTML 页面,使用 `window.deepbi` JS SDK 实现数据查询、空间管理、文件浏览及用户操作。当用户提出以下需求时启用该能力: - 创建 KPI 仪表盘、数据表格、文件浏览器、成员列表、管理页面; - 明确要求“转成 dhtml”、“转译成 HTML”、“把 XX 页面转成……”、“控制台页面”、“管理后台”、“DeepBI 页面迁移”; - 提及位于 `apps/console/src/featur

下载

立即学习“前端免费学习笔记(深入)”;

  • 不启用 ALLOWED_ATTR 白名单模式:默认只删高危项,但会放过大量遗留属性(如 align、valign),应显式声明允许的属性列表
  • 忽略 FORBID_TAGS 和 FORBID_ATTR 的组合效果:比如设了 FORBID_ATTR: ['style'],但没关掉 svg 标签,攻击者仍可通过 <svg><rect onbegin="alert(1)"></rect></svg> 触发 XSS
  • 未处理 data-* 的通配规则:DOMPurify 默认保留所有 data- 属性,若业务依赖 data-user-id,但又不希望 data-onclick 存活,就得用 ADD_DATA_ATTRIBUTES 配合正则精确匹配
  • 服务端调用时未设 SAFE_FOR_TEMPLATES: true:该选项禁用 {{}} 类模板语法解析,避免与 Vue/Handlebars 等框架冲突,漏设会导致清理后残留表达式

手动清理 innerHTML 的陷阱

不用库、靠正则或 setAttribute 循环清理,极易出错:

  • 正则无法正确解析嵌套引号或转义字符:例如 title="He said "don't"",简单 replace(/on\w+="[^"]*"/g, '') 会截断中间的 "don't" 导致 DOM 解析失败
  • 用 element.removeAttribute() 删除后再遍历子节点,可能漏掉动态插入的元素(如通过 document.write 或 insertAdjacentHTML 加入的)
  • 未考虑 Shadow DOM 场景:querySelectorAll('*') 拿不到影子树内的节点,清理范围天然缺失
  • 对自定义元素(如 <my-button></my-button>)的属性不做识别,可能误删其必需的 size、variant 等专有属性

属性清理真正难的不是“删什么”,而是“怎么知道删了之后页面还正常”。建议在清理后做三件事:检查控制台是否报 Failed to execute 'setAttribute' on 'Element' 类错误;用 axe 或 Lighthouse 扫描可访问性回归;对含用户输入的字段(如评论、富文本)做 XSS fuzz 测试。否则,表面干净的 HTML 可能暗藏运行时崩塌风险。

相关文章

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

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

下载

相关标签:

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

热门AI工具

更多
WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

Atoms
Atoms Hot

Atoms是一款AI智能体工具,第一支自动构建真实业务的 AI 团队。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

讯飞智文

一款面向学习和办公场景的AI文档创作工具,可辅助生成PPT与Word文档,提高资料整理和内容制作效率。

码上飞
码上飞 Hot

一款基于自然语言的AI应用开发平台,可根据用户描述自动生成应用程序,帮助个人和团队快速完成应用原型与开发。

相关专题

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

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

7615

2023.06.14

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

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

4172

2023.06.21

html网页制作
html网页制作

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

3830

2023.07.31

html空格
html空格

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

3859

2023.08.01

html是什么
html是什么

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

5299

2023.08.11

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

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

3781

2023.08.11

html转txt
html转txt

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

3609

2023.08.31

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

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

3088

2023.09.01

Go-Zero API开发使用教程
Go-Zero API开发使用教程

本专题聚焦Go-Zero的API开发,拆解.api描述文件的语法结构、路由与分组定义、参数绑定与校验规则,说明统一响应体、JWT鉴权、跨域与接口文档生成的落地方式,并给出网关聚合与接口测试的实践建议。

40

2026.11.12

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
GDB 17.2 官方文档集合
GDB 17.2 官方文档集合

共0课时 | 0人学习

Bootstrap 入门安装配置
Bootstrap 入门安装配置

共0课时 | 0人学习

38+ PhpStorm 提示和技巧
38+ PhpStorm 提示和技巧

共1课时 | 244人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn