HTML代码安全隐患排查全攻略

冬瑶君_6346

冬瑶君_6346

2026-09-27

244人浏览

原创

innerhtml和document.write是xss高危入口,因直接解析用户输入为html/js;应改用textcontent或dompurify净化后赋值,禁用document.write,严格按上下文转义。

html代码安全隐患排查全攻略

HTML 本身不执行逻辑,但它是 XSS、模板注入、DOM 污染等前端安全问题的主战场。排查重点不是“有没有漏洞”,而是“用户输入是否被当作代码执行”——只要动态拼接、未转义、未隔离,风险就已存在。

检查 innerHTML 和 document.write 的使用位置

这两个 API 是 XSS 最直接的入口。它们把字符串当 HTML 解析,一旦内容含用户输入,攻击者就能注入 <script></script>、<img onerror=""> 等任意标签。

  • 搜索项目中所有 innerHTML =、.insertAdjacentHTML(、document.write( 调用,逐行确认右侧值是否完全可控(如来自 location.search、localStorage、API 返回的评论字段)
  • 用 textContent 替代 innerHTML 是最简单有效的修复方式;若必须渲染 HTML,需先过 DOMPurify.sanitize()
  • document.write 在现代页面中基本无正当用途,尤其在 DOM 加载完成后调用会清空整个页面,应直接删除

验证 URL 参数和表单提交是否反射到页面

URL 中的 ?q=xxx、?msg=success 经常被直接插入 <div></div> 或作为 value 属性回显——这是反射型 XSS 的高发场景。

HTML Extract
HTML Extract

使用 MinerU 从 HTML 页面和文件中提取内容,将 HTML 转换为保持标题、列表、表格及文本层次结构的干净、结构化 Markdown。F...

下载
  • 手动测试:在参数中填入 <svg onload="alert(1)"></svg> 或 "><img src="x" onerror="alert(2)">,观察是否触发弹窗或生成未过滤的 DOM 节点
  • 检查 JavaScript 中解析 URL 的逻辑,例如 new URLSearchParams(location.search).get('q') 后是否未经处理就写入页面
  • 服务端返回的 JSON 数据若被前端用 JSON.parse() 后直接拼进 HTML 字符串(如 `<h2>${data.title}</h2>`),同样危险

审查模板引擎中用户输入是否参与模板编译

模板注入(如 art-template、FreeMarker、Handlebars)比普通 XSS 更严重:它能让攻击者执行任意服务端逻辑或读取文件。关键判断标准是——用户输入有没有被当成模板语法解析?

  • 查 template.compile(userInput)、new Template(userInput)、res.render('page', { html: userInput }) 这类调用,只要 userInput 来自前端,就是高危
  • 禁用模板引擎中的危险语法:art-template 的 {{= data}}、FreeMarker 的 ${data?eval}、Handlebars 的 {{{html}}} 都不能用于用户数据
  • include 路径含用户输入(如 )等于开放目录遍历,必须禁止

确认 CSP 头和沙箱配置是否生效

CSP 不是万能补丁,但它是最后一道防线。没配或配错,等于把门开着等攻击者进来。

  • 打开浏览器开发者工具 → Network → 刷新页面 → 查看响应头中是否有 Content-Security-Policy,且包含 script-src 'self'(禁止内联脚本和外部域脚本)
  • 若使用 <iframe></iframe> 运行不可信 HTML,必须加 sandbox 属性,且不带 allow-scripts;否则 iframe 内的 eval 或 innerHTML 仍可执行
  • CSP 无法防御 javascript: 伪协议或 DOM-based XSS,所以它必须和编码转义、输入隔离配合使用,不能单独依赖

真正容易被忽略的是:XSS 防护必须按上下文做差异化处理。插在 HTML 标签里要转义 、<code>>;插在属性值里要转义引号和 =;插在 JS 字符串里要用 JSON 编码;插在 URL 里得用 encodeURIComponent。用同一个函数处理所有场景,反而会漏掉关键逃逸路径。

前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!

相关专题

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

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

2023.06.14

5135

7

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

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

2023.06.21

2972

4

html网页制作
html网页制作

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

2023.07.31

2630

5

html空格
html空格

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

2023.08.01

2679

5

html是什么
html是什么

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

2023.08.11

4599

6

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

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

2023.08.11

2621

3

html转txt
html转txt

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

2023.08.31

2409

3

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

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

2023.09.01

2188

6

HTML嵌入CSS样式的方法
HTML嵌入CSS样式的方法

HTML嵌入CSS样式的方法有内联样式、内部样式表和外部样式表。本专题为大家提供CSS样式相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.20

2168

5

热门下载

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

精品课程

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

共0课时 | 0人学习

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

共0课时 | 0人学习

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

共1课时 | 211人学习