💬 实验二:存储型 XSS

Stored XSS Attack

📖 原理说明

存储型 XSS 是最危险的 XSS 类型:

  1. 攻击者提交包含恶意脚本的内容(如评论)
  2. 服务器将恶意内容存储到数据库
  3. 其他用户访问页面时,恶意脚本被加载执行
  4. 所有访问该页面的用户都会中招!
⚠️ 危害对比

反射型 XSS:需要诱导用户点击链接

存储型 XSS:用户正常访问就会中招,危害更大!

🧪 漏洞演示 - 评论系统

💡 尝试以下 Payload:

<script>alert('存储型XSS')</script>

<img src=x onerror="alert('存储型XSS')">

<div onmouseover="alert('hover触发')">鼠标移过来</div>

📋 评论列表

加载中...

🔬 漏洞代码分析

有漏洞的数据流:

用户输入
   ↓
数据库(未过滤存储)
   ↓
页面渲染(innerHTML)  ← 漏洞点!
   ↓
XSS 执行

有漏洞的前端代码:

// ❌ 使用 innerHTML 直接渲染
commentDiv.innerHTML = comment.content

安全的前端代码:

// ✅ 使用 textContent
commentDiv.textContent = comment.content

// 或者后端转义后再渲染
commentDiv.innerHTML = escapeHtml(comment.content)

🛡️ 防御要点