跨站脚本攻击(XSS)

免责申明

        本文仅是用于学习测试自己搭建的XSS注入漏洞使用,请勿用在非法途径上,若将其用于非法目的,所造成的一切后果由您自行承担,产生的一切风险和后果与笔者无关;本文开始前请认真详细学习《‌中华人民共和国网络安全法》‌及其所在国家地区相关法规内容【学法时习之丨网络安全在身边一图了解网络安全法_中央网络安全和信息化委员会办公室】 如您继续阅读该文章即表明您默认遵守该内容。

一、XSS介绍

1.1、什么是XSS

        XSS(全称:Cross Site Scripting【跨站脚本攻击】),为了避免和CSS(全称:Cascading Style Sheets【层叠样式表】)名称混淆冲突,故改名为:XSS;是一种常见的Web应用程序代码注入安全漏洞之一。攻击者可以利用这种漏洞在网站上注入行恶意代码,用户在不知情的情况下访问这些被注入了恶意代码的网站内容,导致用户自己的账户、会话cookie、键盘输入内容等敏感信息被攻击者盗取,攻击者可以利用这些信息突破网站的访问限制并冒充受害用户进行操作。

        XSS属于客户端攻击,侧重于跨站点窃取数据,受害者最终是用户,但特别要注意的是网站管理人员也属于用户之一(这就意味着XSS可以进行"服务端"攻击,因为管理员要比普通用户的权限大得多,一般管理员都可以对网站进行文件管理,数据管理等高级别的权限操作,而攻击者一般也是靠管理员身份作为“跳板”进行实施攻击)。XSS最常用的攻击代码是javascript语言,故想要深入研究XSS,必须要精通Javascript。XSS存储型攻击流程如下图所示:

 XSS是OWASP上2017年第七名最常见的Web应用程序漏洞icon-default.png?t=O83Ahttps://owasp.org/www-project-top-ten/2017/A7_2017-Cross-Site_Scripting_(XSS).html

1.2、XSS漏洞出现的原因

        之所以Web应用程序网站会出现跨站脚本攻击漏洞(XSS)是由于开发这些Web程序网站的人员对所有涉及到的输入输出内容没有进行严格的判断和过滤,导致攻击者将“精心构造”的恶意脚本输入后,再输出到前端时被浏览器当作有效代码解析执行从而产生危害

1.3、XSS的危害

XSS的危害
序号xss的危害内容
1劫持用户浏览器,将用户当前使用的cookie、sessionID等敏感信息发送至攻击者控制的网站或服务器中
2构造虚假的网站页面内容,欺骗用户执行操作,导致用户所有的输入内容都会被发送到攻击者的服务器上(各种网络钓鱼:凭据收集、广告劫持(广告注入)、点击劫持、将用户重定向到恶意网站等)
3有限的监控获取用户的键盘记录内容
4从本地会话 Web 存储、cookie、IndexedDB、页面源代码中窃取数据,截取屏幕截图
5远程代码执行(浏览器漏洞、CMS 漏洞)
6内容欺骗、窃取地理位置、捕获音频、网络摄像头数据(尤其是在各类的社交平台,邮件系统,开源流行的Web应用,BBS,微博等场景中的危害范围广)

二、XSS分类

可以下载phpStudy配合xss_labs项目进行XSS的测试。

2.1、反射型xss或不持久型xss(中低危)

        交互的数据不会被存在Web网站数据库,只是简单的把用户输入的数据内容反射给浏览器进行展示,一次性效果。(非持久型xss攻击是一次性的,仅对当前的页面访问产生影响。即:要求用户访问一个被攻击者篡改后的链接,用户访问该链接时,被植入的攻击脚本被用户游览器执行,从而达到攻击目的。

        一般出现在搜索栏,用户登录等地方,常用来窃取客户端的Cookie进行钓鱼欺骗。(需要用户去点击)

 

2.2、DOM型xss

        不与web网站的后台服务器产生数据交互,是一种直接通过DOM操作前端代码输出的时候产生的漏洞,大部分属于反射型,少部分属于存储型(Dom型xss属于有可能是持久也可能是非持久型)。

        DOM(全称:Document Object Model【文档对象模型】)当你创建好一个html页面并加载到浏览器时,浏览器就生成了一个对应的文档对象模型,该模型会把html网页文内容转换为一个文档对象,该文档对象主要功能是处理这个网页内容。而Javascript 语言就是用来操作这个文档对象模型内容,从而达到操作控制网页效果【即:DOM型xss的产生原因是由于前端js代码的DOM操作导致】。

# 可能触发DOM型的js内容
document.referer
window.name
location
innerHTML
document.write
# DOM型的XSS漏洞一般是闭合现有标签构造新标签或增加属性内容
' onclick="alert(1111)"
' onclick="alert('xss')">
javascript:alert(1)'"><img src="#" onmouseover="alert('xss')">


http://www.ppmy.cn/news/1527005.html

相关文章

基于python+django+vue的个性化餐饮管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于pythondjangovueMySQL的视…

【JavaEE初阶】多线程(5 单例模式 \ 阻塞队列)

欢迎关注个人主页&#xff1a;逸狼 创造不易&#xff0c;可以点点赞吗~ 如有错误&#xff0c;欢迎指出~ 目录 实例1: 单例模式 饿汉模式 懒汉模式 实例2:阻塞队列 生产者消费者模型 优点 ​编辑 代价 简单实现一个生产者消费者模型 Java标准库中的阻塞队列 ​编辑 模拟实现一…

双线性插值算法

线性插值 已知两个点(x1, y1)、(x2, y2),求它们中间坐标(x,y)。 2点求一条直线公式(双线性插值需要的基础公式),这里没有写成经典的AX+B的形式,因为这种形式从权重的角度更好理解。 经过简单整理成下面的格式: 则可以得到 y = a*y1 + (1-a)*y2 其中a和(1-a)为x距离x1和x…

09年408考研真题解析-计算机网络

[题34]在无噪声情况下&#xff0c;若某通信链路的带宽为3kHz&#xff0c;采用4个相位&#xff0c;每个相位具有4种振幅的QAM调制技术,则该通信链路的最大数据传输速率是&#xff08;B&#xff09; A.12 kbps B.24 kbps C.48 kbps D.96 kbps 解析&#xff…

【乐企】基础版本开票代码接口声明

本文是基础版全部代码,包括以下接口: 1、电子发票批量预赋码 2、查询授信额度 3、下载或退回授信额度 4、调整授信额度有效期 5、查询纳税人基本/风险信息 6、查询可用税率 7、查询税收分类编码信息 8、查询差额征税编码 9、数字化电子发票上传 10、查询数字化电子…

LLM - 理解 多模态大语言模型 (MLLM) 的指令微调与相关技术 (四)

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/142063880 免责声明&#xff1a;本文来源于个人知识与公开资料&#xff0c;仅用于学术交流&#xff0c;欢迎讨论&#xff0c;不支持转载。 完备(F…

SQL案例分析:计算延迟法定退休年龄

2024年9月13日第十四届全国人民代表大会常务委员会第十一次会议通过了《关于实施渐进式延迟法定退休年龄的决定》。 从2025年1月1日起&#xff0c;男职工和原法定退休年龄为五十五周岁的女职工&#xff0c;法定退休年龄每四个月延迟一个月&#xff0c;分别逐步延迟至六十三周岁…

系统架构设计师 大数据架构篇一

&#x1f310;大数据架构 大数据处理系统分析 &#x1f50d; 大数据处理系统三大挑战 &#x1f680; 非结构化数据处理&#xff1a;如何处理非结构化和半结构化数据。复杂性与不确定性&#xff1a;大数据复杂性、不确定性特征描述的刻画方法和大数据的系统建模。异构性影响&…

PHP环境搭建详细教程

PHP是一个流行的服务器端脚本语言&#xff0c;广泛用于Web开发。为了使PHP能够在本地或服务器上运行&#xff0c;我们需要搭建一个合适的PHP环境。本教程将结合最新资料&#xff0c;介绍在不同操作系统上搭建PHP开发环境的多种方法&#xff0c;包括Windows、macOS和Linux系统的…

828华为云征文|docker部署kafka及ui搭建

1.介绍 1.1 什么是华为云Flexus X实例 最近华为云828 B2B企业节正在举办&#xff0c;Flexus X实例的促销也非常给力&#xff0c;大家可以去看看。特别是对算力性能有要求&#xff0c;同时对自建MySQL、Redis、Nginx性能有要求的小伙伴&#xff0c;千万不要错过。Flexus云服务器…

初始爬虫6

数据提取 数据提取总结 响应分类 结构化 json数据&#xff08;高频出现&#xff09; json模块 jsonpath模块 xml数据&#xff08;低频出现&#xff09; re模块 …

AWTK fscript 中的 value 扩展函数

fscript 是 AWTK 内置的脚本引擎&#xff0c;开发者可以在 UI XML 文件中直接嵌入 fscript 脚本&#xff0c;提高开发效率。本文介绍一下 fscript 中的 ** value 扩展函数 ** value 扩展函数 value 相关的辅助函数。 1. value_is_valid 判断 value 是否有效。 原型 value_i…

Zotero使用(一)PDF文件导入不会自动识别

上面两种&#xff0c;一种中文&#xff0c;一种英文&#xff0c;会发现&#xff0c;中文的导入进去之后不会自动识别&#xff0c;部分英文也是。不能自动识别就会缺少导出参考文献的功能&#xff0c;怎么办&#xff1f; 发现之前导入喜欢使用PDF格式 可以结合.ris格式&#xf…

【spring】spring框架中使用的设计模式有哪些,经典的设计模式应用,spring框架中哪些地方使用了哪些优秀的设计模式

【spring】spring框架中使用的设计模式有哪些&#xff0c;经典的设计模式应用&#xff0c;spring框架中哪些地方使用了哪些优秀的设计模式 Spring框架在设计和实现过程中&#xff0c;广泛使用了多种设计模式以增强其灵活性、可扩展性和易用性。以下是一些Spring框架中常见的设计…

24.9.16学习笔记

语义分割&#xff08;Semantic Segmentation&#xff09;是一种计算机视觉任务&#xff0c;其目标是对输入图像中的每一个像素进行分类&#xff0c;从而将图像中的不同物体或区域标记出来。与目标检测不同&#xff0c;语义分割不仅关注物体的存在与否&#xff0c;还要明确指出物…

nvidia-docker Failed to initialize NVML: Unknown Error

nvidia镜像拉下来了&#xff0c;但是运行不了。 执行以下命令 sudo docker run --rm --runtimenvidia --gpus all ubuntu nvidia-smi报错 Failed to initialize NVML: Unknown Error参考 https://stackoverflow.com/questions/72932940/failed-to-initialize-nvml-unknown-er…

facebook广告和谷歌广告如何选择效果最大化?

如果你在考虑投放数字广告&#xff0c;但对Facebook广告和Google广告之间的区别感到困惑&#xff0c;不确定该选择哪个平台&#xff0c;这篇文章我们将深入探讨谷歌广告和Facebook广告之间的核心区别&#xff0c;并分析哪些类型的产品更适合在哪个平台上进行推广。 Facebook广…

正点原子阿尔法ARM开发板-IMX6ULL(五)——IMX启动方式

文章目录 一、启动方式选择二、imxdownload做了什么事2.1 IVT2.2 Boot data2.3 DCD 一、启动方式选择 BOOT_MODE0和BOOT_MODE1,这两个是两个IO来控制的。选择从USB启动还是内部BOOT启动。如果要烧写系统到开发板中可以选择从USB下载&#xff0c;下载到SD卡&#xff0c;EMMC、N…

HarmonyOS开发实战( Beta5.0)自定义装饰器实践规范

介绍 本示例介绍通过自定义装饰器在自定义组件中自动添加inspector (布局回调)方法并进行调用。 效果图预览 不涉及 使用说明 在自定义组件上添加自定义装饰器CallbackObserver&#xff0c;并根据参数设置对应的方法名和需要绑定的组件的ID。编译工程&#xff0c;可以根据…

【Go】十五、分布式系统、Consul服务注册发现、Nacos配置中心搭建

分布式 传统开发方式的痛点&#xff1a; 我们的服务分为很多种&#xff1a;用户服务、商品服务、订单服务等&#xff0c;若我们一个成熟的体系内&#xff0c;新添加一个服务&#xff0c;会变得十分的繁琐与困难 当我们的负载较大时&#xff0c;如果选择添加机器的方式来减轻…