真正免费、可批量、能精准控制属性级清洗的工具是ponytail(跨环境白名单)、html5-clear(规则驱动CLI)、Hutool HtmlUtil(Java生态即用方法);其中ponytail基于DOM树解析与白名单重构,支持精确声明标签及属性级允许/禁止策略,Node与浏览器共用同一套配置,避免正则误伤或漏过滤。

直接说结论:真正免费、可批量、能精准控制属性级清洗的工具,其实就三类——ponytail(跨环境白名单)、html5-clear(规则驱动CLI)、Hutool HtmlUtil(Java生态即用方法)。其他所谓“一键清除”的在线工具,要么靠正则硬删(漏过滤/误伤文本),要么只清标签不碰属性(比如cleanHtmlTag()根本不管style或onclick)。
ponytail:为什么它能安全删掉onerror却放过class
它不走正则,而是先解析成DOM树,再按白名单逐节点重构。这意味着你能精确声明:“允许div带class和id,但禁止所有on*事件属性,style只保留color和font-size”。
- 配置写法示例:
{ tags: { div: { attributes: ['class', 'id'] } }, attributes: { '*': { deny: ['on.*', 'style'], allow: { style: ['color', 'font-size'] } } } } - Node 和浏览器里用同一套配置,服务端清洗富文本 + 前端预览时校验,规则不用双写
- 容易踩的坑:白名单没配全时,默认删光所有属性——不是bug,是设计;别指望它自动保留你没明说的
data-*,得手动加进allow
html5-clear:适合CI流程里自动清理HTML文件的CLI工具
它基于 这是Java项目里最省事的方案——不引新依赖,一行代码删指定属性。但必须清楚它的边界: 生成可在 deepbi 沙箱 iframe 内运行或作为独立文件运行的交互式 HTML 页面,使用 `window.deepbi` JS SDK 实现数据查询、空间管理、文件浏览及用户操作。当用户提出以下需求时启用该能力:
- 创建 KPI 仪表盘、数据表格、文件浏览器、成员列表、管理页面;
- 明确要求“转成 dhtml”、“转译成 HTML”、“把 XX 页面转成……”、“控制台页面”、“管理后台”、“DeepBI 页面迁移”;
- 提及位于 `apps/console/src/featur 真正难的不是“删属性”,而是判断哪些该留、哪些该砍、砍到哪一层。比如HTMLHint扩展,本质是“linter + fixer”,重点在修复不符合HTML5规范的属性滥用,比如把style="text-align:center",再按规则决定是否保留该style。
npx html5-clear -f input.html -o output.html --ruleset basic,basic规则集会删font、center等过时属性,但留class和data-
style?得换strict规则集,或者自定义JSON规则文件,显式写"attr-no-style": true
onclick),这类XSS风险属性得靠ponytail或DOMPurify补位Hutool的
removeHtmlAttr()和removeAllHtmlAttr()怎么选
HtmlUtil.removeHtmlAttr(html, "style"):只删style属性,标签和内容全留,适合清理内联样式但保留结构HtmlUtil.removeAllHtmlAttr(html):删光所有属性,@#@#@#@#@#@#@#@#@#@0变成link,但<script></script>标签本身还在——它不管标签,只管属性on*,但留data-id”,这种得自己写正则配合replaceAll()
data-* 要不要保留?aria-* 是否属于业务必需?这些没法靠工具自动猜,得在配置里写清楚——否则批量跑完发现关键无障碍属性没了,比不清洗还麻烦。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










