快速定位XSS入口点需聚焦执行上下文:搜索on*事件属性、javascript:协议属性、innerHTML等危险API及srcdoc;DOM型XSS手动验证应追踪location.search/hash等源并断点观察其写入DOM过程;表单与重定向漏洞须检查action、meta refresh、hidden字段及location赋值是否直接使用未校验的用户输入。

HTML代码审计不是“看一遍源码就完事”,而是带着明确攻击视角,从用户输入如何进、数据如何出、脚本如何执行这三个环节,快速定位高危模式。直接看源码时,90%的漏洞藏在动态拼接和未过滤的输出点,而不是语法错误。
怎么快速定位XSS入口点
重点不是找<script>标签,而是找所有能执行JS或解析HTML的地方:
- 搜索所有以
on开头的属性:onclick、onerror、onload、onfocus——这些值若来自URL参数或location.search,基本等于开门揖盗 - 检查
href、src、formaction等属性是否包含javascript:或vbscript:协议 - 盯紧
innerHTML、outerHTML、document.write()、insertAdjacentHTML()调用,只要右边是变量(如el.innerHTML = data),且data来源不可信,就是高危 - 别漏掉
srcdoc属性——它等价于内嵌一个完整HTML页面,常被当成“安全替代iframe”误用
DOM型XSS怎么手动验证
这类漏洞不经过服务器响应,纯前端触发,所以必须在浏览器里动态追踪:
- 打开开发者工具,在
Sources面板全局搜索:location.search、location.hash、document.referrer、localStorage、sessionStorage - 对每个匹配结果设断点,刷新页面,观察变量值是否被直接赋给
innerHTML或document.title等敏感位置 - 手动构造payload测试:比如URL加
#<script>alert(1)</script>,再看location.hash内容是否被写入DOM - 注意绕过场景:用
" onblur="alert(1)测试<input value="xxx">类结构,引号闭合后注入事件
表单与重定向漏洞怎么一眼识别
这两类漏洞往往表面“功能正常”,但背后信任了不该信任的数据:
立即学习“前端免费学习笔记(深入)”;
- 检查
<form>的action属性是否动态生成,比如action="/submit?next="——如果nextUrl来自用户输入且无白名单校验,就是开放重定向 - 查找
<meta http-equiv="refresh">标签,看content里的url=是否拼接了request.getParameter("redirect")之类的服务端参数 - 审查
<input type="hidden">字段:value是否为价格、权限等级、用户ID等敏感业务值?只要没服务端二次校验,就可被篡改 - 注意
window.location.href、window.location.replace()赋值语句,右侧是否直接用了new URLSearchParams(location.search).get("to")这类未经过滤的来源
最常被忽略的其实是“上下文错配”:比如把用户输入用HTML实体编码后塞进<script>标签里当JS字符串用,编码方式完全不对路。这时候转义没用,反而制造假安全感。



















