OWASP ZAP通过代理捕获浏览器真实访问的全量请求/响应流,覆盖前端静态内容、后端接口及渲染上下文三层,支持AJAX Spider适配SPA,主动扫描检测X-Frame-Options缺失、危险iframe及innerHTML赋值等漏洞。

HTML应用本身不执行逻辑,漏洞扫描必须覆盖「前端静态内容 + 后端交互接口 + 渲染上下文」三层,只扫HTML源码等于没扫。
用 OWASP ZAP 扫描 HTML 页面的真实行为
ZAP 不是“看 HTML 文件”,而是通过代理捕获浏览器真实访问时的全部请求/响应流,才能发现动态生成的 iframe、JS 注入点、CSP 失效等关键问题。
- 启动 ZAP 后,把浏览器代理设为
localhost:8080,再手动访问目标页面(含登录、表单提交、AJAX 加载等完整操作) - ZAP 会自动记录所有请求,包括由 JS 动态发起的
/api/user?uid=123这类接口调用,这些才是 XSS 或 IDOR 的实际入口 - 右键目标 URL → “主动扫描”,ZAP 会尝试在响应头中检测
X-Frame-Options缺失、在 HTML 中识别未 sandbox 的<iframe>、在 JS 中发现innerHTML = data类危险赋值 - 注意:若页面大量依赖前端路由(如 React Router),需开启 ZAP 的“Ajax Spider”模块,否则它会漏掉 #/admin 这类路径下的内容
用 Burp Suite 检查表单提交的后端信任边界
HTML 表单的 <form action="/login"> 只是入口,真正漏洞藏在服务器如何处理 POST /login 请求——Burp 的 Repeater 和 Intruder 是验证这点的核心工具。
- 先用 Proxy 拦截一次正常登录请求,发到 Repeater,手动修改
username字段为' OR '1'='1,观察响应是否返回登录成功或数据库错误 - 对敏感参数(如
id、price、role)批量测试越权:用 Intruder 加载用户 ID 列表,发包看能否读取他人订单 - 检查响应中是否返回了
CSRF token,并在 Repeater 中删掉该字段重放,确认是否仍能提交成功——这是典型的 CSRF 漏洞验证方式 - 别依赖前端
disabled或hidden属性:Burp 能直接绕过它们改请求,这才是真实攻击路径
用 htmlhint + axe-core 做静态可访问性与基础安全预筛
这两个工具不找高危漏洞,但能快速暴露 HTML 层面的硬伤:缺失 alt 是可访问性问题,缺失 src 的 <script> 标签却可能加载恶意 CDN,而 htmlhint 默认根本不会报这类问题。
立即学习“前端免费学习笔记(深入)”;
- 运行
htmlhint --init生成.htmlhintrc,必须手动开启:"attr-no-duplication": true(防重复 id 导致 DOM 混乱)、"attr-value-not-empty": true(防空src或href) - 在浏览器控制台直接运行:
await (await fetch('https://cdn.jsdelivr.net/npm/axe-core@4.10.2/axe.min.js')).text().then(eval); axe.run({runOnly: ['image-alt', 'script-src']}).then(console.log),聚焦检查图片 alt 和外链脚本来源 - axe 不会报
<script src="http://evil.com/x.js">,但会报<img>缺 alt;htmlhint 不会报内联事件onerror=alert(1),但能发现未闭合的<script>标签——二者互补,缺一不可
为什么 Nikto 和 toXSSin 不适合直接扫 HTML 应用
Nikto 扫的是 Web 服务器配置和已知路径(如 /phpmyadmin/),toXSSin 是用于钓鱼场景的 XSS 利用平台,二者都不解析 HTML 结构或模拟用户交互,对现代单页应用基本无效。
-
nikto -h http://example.com输出的 “Apache 2.4.52 outdated” 对 Vue 应用毫无意义,它甚至不知道你用的是 Nginx 反向代理后的前端服务 -
toxssin.py需要你已有 XSS 漏洞并想利用它,它不是扫描器,不能帮你发现document.write(location.hash)这种自反射型 XSS - 真正该用 Nikto 的时机,是在 ZAP/Burp 扫完后,拿它的结果交叉验证:比如 ZAP 发现一个
/backup.zip链接,再用 Nikto 确认该路径是否存在目录遍历风险
最容易被忽略的一点:HTML 应用的漏洞往往不在单个文件里,而在「用户点击按钮 → JS 拼接 URL → fetch 请求 → 后端返回 HTML 片段 → innerHTML 插入」这个链条的任意一环。扫描时必须让工具走完这条链,而不是只丢一个 index.html 给它分析。



















