### [HTML 代码安全检查:三层排查顺序](https://www.huociguo.com/article/1541)
**Published:** 2026-09-30T05:29:45
**Author:** 米了
**Excerpt:** 安全检查按源码、结构、渲染三层推进。每层列出检查项、可用的检索命令与修补方向。
HTML 安全检查常见的问题是一上来就扫 XSS,漏掉成本更低、命中率更高的前两层。按源码、结构、渲染三层推进,每层的检索方式与修补位置都不同。

先查可见的明文信息,再查结构,最后查渲染行为
## 第一层:源码里的明文
```bash
grep -RInE "(api[_-]?key|secret|token|password)s*[:=]" ./templates
grep -RIn "TODO|内网|192\.168." ./templates
```
- 模板中写死的接口密钥、测试账号、内网地址;
- 注释里的调试开关与临时地址;
- 被一并打包进静态目录的配置文件副本。
这一层的修补位置在构建与部署流程:密钥进环境变量,临时注释在合并前清掉。
## 第二层:结构缺陷
- 非法嵌套:交互元素套交互元素,例如 `a` 里嵌 `button`;
- 表单控件缺少 label 关联,读屏无法获得名称;
- 图片缺 alt,表格缺 th 与 scope;
- 表单缺 CSRF 令牌字段。
结构缺陷不直接产生漏洞,但会连带产生逻辑问题:标签错配会让浏览器改写 DOM 结构,后续的脚本取值与预期不再一致。
## 第三层:渲染行为
```bash
grep -RIn "innerHTML|outerHTML|document.write|onclick=" ./templates
```
- 拼接 HTML 的位置:传入内容是否经过转义;
- 内联事件处理器:`onclick` 里的字符串是否含用户输入;
- 动态插入的 script 与 iframe:来源是否白名单;
- URL 直接进 href 或 src:是否校验协议,防 javascript: 开头的取值。
## 修补顺序
1. 输出转义优先,富文本走白名单过滤库;
2. 事件绑定改 addEventListener,去掉内联处理器;
3. 外部资源加 integrity 与 crossorigin;
4. CSP 作为兜底,不替代前面几步。
**Tags:** DOM操作, XSS防护, 代码审计, 信息泄露, 前端安全
**Categories:** HTML5
---