XSS学习

XSS概述

跨站脚本攻击,是一种网站应用程序的安全漏洞攻击

XSS攻击通常指利用网页开发时留下的漏洞,通过一些方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序,当用户正常访问时,则可导致嵌入的恶意脚本代码的执行,从而达到恶意攻击用户的目的

XSS攻击的两大要素

  • 攻击者提交恶意代码
  • 浏览器执行恶意代码

XSS原理

前言

HTML是超文本标记语言,通过将一些字符特殊对待来区别文本和标记

例如

小于号(<)被看作值HTML标签的开始,与(&)之间的字符是页面的标题

原理

当动态页面中插入的内容有这些特殊字符(如<)时,用户浏览器会将其误认为是插入了HTML标签,当这些HTML标签引入了一段JavaScript脚本时,这些脚本程序就将会在用户浏览器中执行。所以当这些特殊字符不能被动态页面检查或检查出现失误时,就会产生XSS漏洞

简单来说XSS就是将恶意JavaScript 代码注入到目标网站的页面中,用户使用浏览器时恶意代码执行,实现攻击的目的

常见的攻击包括

  • 窃取用户Cookie
  • 劫持用户会话
  • 伪造用户操作
  • 篡改网页内容
  • 传播蠕虫
  • 盗取用户敏感信息

XSS的三种类型

反射型XSS

img

  • 特点

  • 恶意代码通过URL传入

  • 服务器将恶意代码反射 回页面

  • 仅在当前请求中执行,不存储在服务器

  • 需诱骗用户点击恶意链接

  • 典型场景

  • 将不可信数据插入到HTML标签之间(如div,p,td)

  • 将不可信数据插入到HTML属性之间(如

  • 将不可信数据插入到script里时(如

  • 插入到Style属性里的情况(如

  • 将不可信数据插入到HTML URL里(如

  • 攻击示例

1
http://example.com/search?q=<script>alert(document.cookie)</script>

如果服务器未对q的值进行检测过滤,则执行脚本,弹出cookie

存储型XSS

img

  • 特点

  • 恶意代码被存储到服务器数据库

  • 所有访问该页面的用户都会受到攻击

  • 典型场景

  • 评论区

  • 留言板

  • 用户资料

  • 文章内容

  • 示例

在评论框输入

1
<script>alert(document.cookie)</script>

如果服务器未过滤,该评论会被存入数据库,所有访问该页面的用户都会执行该脚本

DOM型XSS

DOM 型 XSS 是前端 JavaScript 代码造成的漏洞,与服务器无关

  • 特点

  • 恶意代码不经过服务器

  • 通过修改页面DOM结构触发

  • 服务器返回的页面本事时干净的

  • 漏洞存在于前端JS代码中

  • 典型场景

  • 基于URL参数动态渲染页面内容的单页应用

  • 攻击示例

  • 页面代码

1
2
3
4
<script>
var x=document.location.hash.substring(1);
document.write("<div>"+x+"</div>");
</script>

攻击者构造

1
http://URL/#<script>alert(1)</script>

页面执行脚本


XSS学习
https://colourful228.github.io/2026/02/13/XSS学习/
作者
Colourful
发布于
2026年2月13日
更新于
2026年2月13日
许可协议