无需登录 数据私有 本地保存

XSS 过滤器测试沙盒 - 输入转义与过滤演示

10
0
0
0
✓ 已复制到剪贴板

XSS 过滤器测试沙盒

安全演示环境

输入潜在的XSS攻击代码,实时观察多种转义与过滤策略的效果。所有渲染均在沙盒环境中进行,确保安全。

输入测试代码
预设Payload(点击快速填入):
<script> 弹窗 <img onerror> <body onload> <svg onload> javascript: 协议 鼠标悬停事件 属性闭合注入 <iframe> JS 恶意链接 Cookie窃取演示
实时检测
— 等待输入 —
长度: 0
沙盒渲染预览 Sandbox隔离
iframe sandbox 隔离,脚本无法执行
转义与过滤结果对比 — 实时更新
HTML 实体编码 高安全
URL 编码 URL上下文
Base64 编码 传输编码
移除危险标签 黑名单过滤
移除事件处理器 属性过滤
综合安全过滤 推荐方案
原始输入(未处理) ⚠ 危险
常见问题与知识点

XSS(跨站脚本攻击)是攻击者将恶意脚本注入网页,在用户浏览器中执行的手段。主要分为三类:
  • 存储型(Stored):恶意代码被永久存储在服务器(如数据库、评论),用户访问时被渲染执行。
  • 反射型(Reflected):恶意代码通过URL参数等方式传入,服务器将其回显到页面中。
  • DOM型:完全在客户端发生,通过修改DOM结构注入恶意代码,不经过服务器。

防御XSS需要多层策略
  1. 输出编码:根据上下文(HTML/URL/JS/CSS)选择合适的编码方式,如HTML实体编码。
  2. 输入验证:使用白名单验证,仅允许安全字符通过。
  3. CSP(内容安全策略):通过HTTP头限制可执行的脚本来源。
  4. 使用安全API:优先使用 textContent 而非 innerHTML
  5. HttpOnly Cookie:防止JavaScript访问敏感Cookie。
  6. 框架自带防护:React/Vue等现代框架默认会转义插值内容。

不能。HTML实体编码仅在HTML文本上下文中有效。如果用户输入被放入:
  • JavaScript代码中(如 <script>var name='用户输入';</script>),HTML实体不会被解析。
  • HTML属性中未加引号,攻击者可以插入空格和事件处理器。
  • URL中(如 <a href="用户输入">),需要URL编码而非HTML实体。
  • CSS中,需要CSS转义。

因此需要根据上下文选择正确的编码方式

CSP(Content Security Policy)是一种浏览器安全机制,通过HTTP响应头或 <meta> 标签声明允许加载的资源来源。例如:
Content-Security-Policy: default-src 'self'; script-src 'self' https://trusted-cdn.com; style-src 'self' 'unsafe-inline'

CSP可以有效阻止内联脚本执行、限制外部脚本加载,是防御XSS的最后一道防线

  • innerHTML:将字符串解析为HTML并渲染,会执行其中的脚本,是XSS的主要入口。
  • textContent:将字符串作为纯文本插入,不会解析HTML标签,天然安全。

始终优先使用 textContentinnerText 处理用户输入。仅在信任内容来源时使用 innerHTML

常见攻击向量包括:
  • <script> 标签直接注入
  • <img onerror> 图片加载失败触发
  • <svg onload> SVG加载时触发
  • <body onload> 页面加载触发
  • javascript: 伪协议在链接中
  • <iframe src="javascript:...">
  • CSS注入(expression()url()
  • 事件处理器注入(onmouseoveronfocus等)

完全安全。本工具采用多重安全措施:
  • 所有结果展示均使用 textContent 安全渲染,绝不使用 innerHTML 直接插入用户输入。
  • 预览iframe使用了 sandbox 属性,完全隔离脚本执行环境。
  • 复制、检测等功能均在客户端完成,不涉及服务器交互。
  • 工具本身不存储任何用户输入数据。

单一防御措施容易被绕过。例如:
  • 仅依赖黑名单过滤 → 攻击者可使用变体绕过(大小写、编码、嵌套等)。
  • 仅依赖HTML实体编码 → 在JS上下文中无效。
  • 仅依赖CSP → 若策略配置不当仍有风险。

推荐采用纵深防御(Defense in Depth):输入验证 + 输出编码 + CSP + 安全API + HttpOnly Cookie,多道防线确保即使一层被突破,仍有其他保护。