XSS - 跨站脚本攻击

news2024/9/28 5:54:01

一、XSS简介。

XSS跨站脚本(Cross-Site Scripting,XSS)自1996年诞生以来,如今已经历十多年的演化。由于和另一种网页技术-层叠样式表(Cascading Style Sheets,CSS)的缩写一样,为了防止混淆,故把原本的CSS简称为XSS。在各种WEB应用安全漏洞中,XSS跨站脚本攻击漏洞一直被OWASP(Open Web Application Security Project)组织评为十大应用安全中的其中之一。【参考OWASP TOP 10:2007年A2 / 2010年A2 / 2013年A3】        

XSS最大的特点就是能注入恶意的HTML/JavaScript代码到用户浏览的网页上,是因WEB应用程序对用户输入过滤不足而产生的,当用户浏览这些网页时,就会执行其中的恶意代码。由于HTML代码和客户端JavaScript脚本能在受害者主机上的浏览器任意执行,这样等同于完全控制了WEB客户端的逻辑,在这个基础上,黑客可以轻易地发起Cookie窃取,会话劫持,钓鱼欺骗等各种各样的攻击。

通常情况下,我们既可以把XSS理解成一种WEB应用安全漏洞,也可以理解成一种攻击手段。

 二、XSS攻击流程。

三、XSS攻击类型(反射型、DOM型、存储型)。

1.反射型。

 

 反射型XSS也被称为非持久性XSS,是现在最容易出现的一种XSS漏洞。当用户访问一个带有XSS代码的URL请求时,服务器端接收数据后处理,然后把带有XSS代码的数据发送到浏览器,浏览器解析这段带有XSS代码的数据后,最终造成XSS漏洞。

例子: <?php $username = $_GET['username']; echo $username; ?>      在这段代码中,程序接收username值后再输出,如果提交xss1.php?username=test,那么程序将输出test,如果攻击者输入username=<script>alert(‘xss’)</script>,将会造成反射型XSS漏洞。

反射型XSS攻击应用场景:

攻击场景: 假如http://test.com/xss1.php存在XSS反射型跨站漏洞,那么攻击者的步骤可能如下。 test1是网站test.com的用户,此时正在登录的状态中。

攻击者发现http://test.com/xss1.php存在XSS反射型跨站漏洞,然后精心构造JavaScript代码,此段代码可以窃取用户的cookie。

攻击者将带有反射型XSS漏洞的URL通过站内信息发送给用户test1,使用各种诱导的方式让用户test1去打开链接。

如果用户test1打开了带有XSS漏洞的URL,那么就会把自己的cookie发送到攻击者中。

攻击者接受到用户test1的会话cookie,就可以直接利用cookie以test1的身份登录test.com网站中。

以上步骤,通过使用反射型XSS漏洞可以以test1的身份登录网站,这就是其危害。

反射型演示如下图所示:

2.存储型。

     存储型XSS又被称为持久性XSS,存储型XSS是最危险的一种跨站脚本。允许用户存储数据的WEB应用程序都可能会出现存储型XSS漏洞,当攻击者提交一段XSS代码后,被服务器端接收并存储,当再次访问页面时,这段XSS代码被程序读取响应给浏览器,造成XSS跨站攻击,这就是存储型XSS。        

在测试是否存在XSS时,首先要确定输入点与输出点,例如:我们要在留言内容上测试XSS漏洞,首先就要去寻找留言内容输出(显示)的地方是在标签内还是标签属性内,或者在其他地方,如果输出的数据在属性内,那么XSS是不会被执行的。 

当管理员登录后台去审核留言板的时候,弹框了,这下就中招了,当然这只不过是XSS漏洞测试而已,只是证明这里有XSS漏洞,但是实则对服务器没有任何危害,如图

3.DOM型。

     DOM—based XSS漏洞是基于文档对象模型Document Object Model,DOM)的一种漏洞。DOM是一个与平台、编程语言无关的接口,它允许程序或脚本动态地访问和更新文档内容、结构和样式,处理后的结果能够成为显示页面的一部分。DOM中有很多对象,其中一些是用户可以操纵的,如uRI ,location,refelTer等。客户端的脚本程序可以通过DOM动态地检查和修改页面内容,它不依赖于提交数据到服务器端,而从客户端获得DOM中的数据在本地执行,如果DOM中的数据没有经过严格确认,就会产生DOM—based XSS漏洞。

 

 

XSS危害

网络钓鱼,包括盗取各类用户账号;

窃取用户cookie资料,从而获取用户隐私信息,或利用用户身份进一步对网站执行操作;

劫持用户(浏览器)会话,从而执行任意操作,例如进行非法转账,强制发表日志,发送电子邮件等;

强制弹出广告页面,刷流量等;

网页挂马;

进行恶意操作,例如任意篡改页面信息,删除文章等;

进行大量的客户端攻击,如DDOS攻击;

获取客户端信息,例如用户的浏览历史,真实ip,开放端口等;

控制受害者机器向其他网站发起攻击;

结合其他漏洞进一步扩大攻击;

提升用户权限,包括进一步渗透网站;

传播XSS跨站脚本蠕虫等;

......... 

XSS的防护

对用户提交的数据进行有效验证,仅接受指定长度范围内,采用适当格式的内容提交,阻止或忽略初次之外的其他任何数据

输入是否仅仅包含合法的字符

输入的字符串是否超过最大长度的限制

输入如果为数字,数字是否在指定的范围内

输入是否符合特定要求,例如:邮箱、电话号码、IP地址等

输入与输出中的过滤 黑名单与白名单 WEB安全编码规范 HttpOnly cookie

输出编码 对输出的数据进行编码,如HTML编码,就是让可能造成危害的信息变成无害

总的原则:输入做过滤,输出做转义

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/571029.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Netty和Tomcat的区别、性能对比

文章目录 一、Netty和Tomcat有什么区别&#xff1f;二、为什么Netty受欢迎&#xff1f;三、Netty为什么并发高 &#xff1f; 一、Netty和Tomcat有什么区别&#xff1f; Netty和Tomcat最大的区别就在于通信协议&#xff0c;Tomcat是基于Http协议的&#xff0c;他的实质是一个基…

【AI创作】用AI创作助手写的文章--提问Git系列

目录 解释 Git 的基本概念和使用方式。Git 的使用方式如下&#xff1a; git常用命令有哪些&#xff1f;git异常报错解决方法最后 解释 Git 的基本概念和使用方式。 Git 是一种分布式版本控制系统&#xff0c;它通过记录文件的变化来管理文件版本&#xff0c;可以保存文件的历史…

在树莓派上控制GPIO常用的编程语言有哪些

在树莓派上控制GPIO(General Purpose Input Output,通用输入输出接口),比较常用和简单的编程语言有: 1. Python 这是树莓派官方推荐语言&#xff0c;控制GPIO只需要导入RPi.GPIO库,简单易学,代码如下: import RPi.GPIO as GPIOGPIO.setmode(GPIO.BCM) GPIO.setup(18, GPIO.…

​路由器端口映射怎么设置?内网IP不能映射怎么办?​

使用路由器后&#xff0c;Internet用户无法访问到局域网内的主机&#xff0c;因此不能访问内网搭建的Web、FTP、Mail等服务器。路由器 端口映射功能可以实现将内网的服务器映射到Internet&#xff0c;从而实现服务器对外开放。 建议在设置路由器端口映射之前&#xff0c;确认以…

ServletOutputStream下载文件名中文乱码或不显示

废话不多说&#xff0c;直接上代码。。。 下载文件名中文乱码或不显示情况 下载文件名是一道下滑线 改造代码 pdfName是下载文件的名字&#xff0c;带后缀。 String s URLEncoder.encode(pdfName, "utf-8").replaceAll("\\", "%20"); Stri…

生成式人工智能(generative AI)对公共部门的影响

作者&#xff1a;Leanne Link, Dave Erickson 在过去的几个月里&#xff0c;我们看到了对生成式人工智能 (generative artificial intelligence - GAI) 的极大兴趣。 人们正在试用 ChatGPT 等 GAI 应用程序&#xff0c;企业正在思考它对客户体验、会计、营销等方面的影响。 鉴于…

分享这几个简单好用的手机使用技巧给大家

技巧一&#xff1a;微信的听文字消息功能是一项方便而实用的功能&#xff0c;旨在帮助用户通过语音合成技术将文字消息转化为语音&#xff0c;以便用户可以通过听觉方式收听和理解信息。 这项功能适用于用户在某些情况下无法阅读或不方便阅读文字消息的场景。当用户收到一条文…

springboot、Mybatis-plus工程多数据源字段映射不生效

1、多数据源配置文件 2、配置项 多个数据源配置项中分别添加配置 bean.getObject().getConfiguration().setMapUnderscoreToCamelCase(true); //配置驼峰命名 或者 参考地址 Configuration MapperScan(basePackages "it.aspirin.riderserver.mapper.mysql", sqlS…

C++模板初阶(函数模板、类模板)知识点+完整思维导图+实操图+深入细节通俗易懂建议收藏

绪论 思想决定行动&#xff0c;行动养成习惯&#xff0c;习惯形成品质&#xff0c;品质决定命运。——陶行知 本章讲的是c的初阶模板&#xff0c;全文不算代码字数少的可怜&#xff0c;但模板是我们c必须学的一个宝物&#xff0c;他的出现可是c的飞跃性成就&#xff01;下面将主…

如何在华为OD机试中获得满分?Java实现【打印文件】一文详解!

✅创作者&#xff1a;陈书予 &#x1f389;个人主页&#xff1a;陈书予的个人主页 &#x1f341;陈书予的个人社区&#xff0c;欢迎你的加入: 陈书予的社区 &#x1f31f;专栏地址: Java华为OD机试真题&#xff08;2022&2023) 文章目录 1. 题目描述2. 输入描述3. 输出描述…

jsp基于 JavaWeb+springboot 的校园快递驿站管理系统

不同的系统提供的服务也不相同&#xff0c;其对应的功能也不相同&#xff0c;所以&#xff0c;系统开工前&#xff0c;需要明确其用途&#xff0c;确定其功能。由此&#xff0c;才可以进行各个任务的开展。 校园驿站管理系统经过分析&#xff0c;确定了其需要设置管理员的角色&…

如何使用Word控件Spire.Doc创建专属条码?

Spire.Doc for .NET是一款专门对 Word 文档进行操作的 .NET 类库。在于帮助开发人员无需安装 Microsoft Word情况下&#xff0c;轻松快捷高效地创建、编辑、转换和打印 Microsoft Word 文档。拥有近10年专业开发经验Spire系列办公文档开发工具&#xff0c;专注于创建、编辑、转…

chatgpt赋能python:Python修改变量名:提高代码可读性和维护性

Python修改变量名&#xff1a;提高代码可读性和维护性 Python是一门通用编程语言&#xff0c;被广泛应用于Web开发、数据分析、人工智能等领域。在实际开发中&#xff0c;我们可能会遇到需要修改变量名的情况。本文将介绍如何使用Python修改变量名&#xff0c;提高代码的可读性…

LiveGBS流媒体平台国标GB/T28181功能-作为下级级联到海康大华宇视华为等第三方国标平台同样支持对接政务公安内网国标视频平台

LiveGBS流媒体平台国标GB/T28181功能-作为下级级联到海康大华宇视华为等第三方国标平台同样支持对接政务公安内网国标视频平台 1、什么是GB/T28181级联2、搭建GB28181国标流媒体平台3、获取上级平台接入信息3.1、如何提供信息给上级3.2、上级国标平台如何添加下级域3.2、接入Li…

【vim neovim】从入门到放弃(“四种”模式、常用命令、正则表达式、文件属性、插件安装--代码补全、文件树)

本文所有操作均通过ssh连接腾讯云服务器完成。如果你正在使用安装GNOME桌面的Linux&#xff0c;很多操作可以通过鼠标完成&#xff0c;或许更加直观。 推荐使用neovim&#xff08;结合鼠标操作更加丝滑&#xff09;。 nvim效果展示&#xff1a; 一、vim简介二、vim操作2.1 三种…

【SpringCloud】三、Nacos服务注册+配置管理+集群搭建

文章目录 一、认识Nacos1、安装2、服务注册和发现3、服务分级存储模型4、负载均衡策略--NacosRule5、服务实例的权重设置5、环境隔离namespace6、Eureka和Nacos的区别 二、Nacos配置管理1、统一配置管理2、微服务配置拉取3、配置热更新4、多环境配置共享 三、Nacos集群搭建1、初…

【JavaSE】Java基础语法(十一):String、StringBuilder详解

文章目录 &#x1f378;1. String类&#x1f349;&#x1f349;1.1 String概述&#x1f349;&#x1f349;1.2 String类的构造方法&#x1f349;&#x1f349;1.3 创建字符串对象的区别对比&#x1f349;&#x1f349;1.4 字符串的比较1.4.1 字符串的比较 &#x1f349;&#x…

GitHub上标星75k+超牛的《Java面试突击离线版》够你润进去了

前言 不论是校招还是社招都避免不了各种面试。笔试&#xff0c;如何去准备这些东西就显得格外重要。不论是笔试还是面试都是有章可循的&#xff0c;我这个有章可循‘说的意思只是说应对技术面试是可以提前准备。 运筹帷幄之后&#xff0c;决胜千里之外!不打毫无准备的仗,我觉…

C# 栈(Stack)

目录 一、概述 二、基本的用法 1.入栈 2.出栈 Pop 方法 Peek 方法 3.判断元素是否存在 4.获取 Stack 的长度 5.遍历 Stack 6.清空容器 7.Stack 泛型类 三、结束 一、概述 栈表示对象的简单后进先出 (LIFO) 非泛型集合。 Stack 和 List 一样是一种储存容器&#x…

这种新的Facebook Messenger群发方式,让你的信息更有价值!

随着社交媒体的迅速发展&#xff0c;Facebook已成为人们分享信息、建立联系和开展业务的重要平台之一。在这个数字时代&#xff0c;如何有效地传达信息并与目标受众建立联系成为了关键的挑战。 而最近引入的Facebook Messenger群发方式为我们提供了一种全新的机会&#xff0c;…