以下是针对 XSS(跨站脚本攻击)的防范方法,基于最新技术实践整理,按核心防御层级分类:
🔒 一、输入层防护
-
输入验证与过滤
- 白名单校验:仅允许安全的字符类型(如字母、数字),过滤
<>'"&等特殊符号。 - 格式限制:对邮箱、电话等字段强制格式验证(如正则匹配)。
示例:用户输入
alert(1)→ 过滤后转为空或安全文本。 - 白名单校验:仅允许安全的字符类型(如字母、数字),过滤
-
富文本处理(如评论、编辑器)
- 使用 DOMPurify 等库,仅保留安全的 HTML 标签和属性(如保留
<b>但移除<script>)。
- 使用 DOMPurify 等库,仅保留安全的 HTML 标签和属性(如保留
📤 二、输出层防护
-
上下文相关编码
输出位置 编码规则 示例 HTML 正文 转义 <>&"'→<>&"'"<script>"→<script>HTML 属性 同上,并确保属性值用引号包裹 <div attr=输入值>→<div attr="安全值">JavaScript 使用 \uXXXXUnicode 转义或 JSON.stringifyvar x="输入值"→var x="\u003cscript\u003e"URL 编码 %XX格式(如encodeURIComponent())?redirect=javascript:alert(1)→ 阻断执行 -
避免危险 API
- 禁用
innerHTML、document.write()等直接写入 HTML 的 API,改用textContent。
- 禁用
🛡️ 三、浏览器层加固
- 内容安全策略(CSP)
- 通过 HTTP 头限制资源加载来源:
Content-Security-Policy: default-src 'self'; script-src 'self' https://trusted.cdn.com;- 禁止内联脚本(
unsafe-inline)和eval()。
- 禁止内联脚本(
- 通过 HTTP 头限制资源加载来源:

最低0.47元/天 解锁文章
1094

被折叠的 条评论
为什么被折叠?



