渗透测试漏洞之XSS漏洞

目录

1.1  XSS漏洞原理

1.2 XSS漏洞分类 

1.3 XSS漏洞危害 

 1.4 XSS漏洞的防范

 1.5 XSS各类别的区别


1.1  XSS漏洞原理

Cross-site Scripting,简称XSS 
原理:就是程序对输入输出没有做合理的过滤限制,导致攻击者构造的字符输出到前端时被浏览器当作有效代码解析执行从而产生的危害

1.2 XSS漏洞分类 

1、反射型XSS  非持久性XSS(一次性),当用户访问一个带有XSS代码 的HTML请求时,服务端接收后处理,然后把带有XSS的数据发送到浏览器,浏览器解析这段带有XSS代码的数据后,造成XSS漏洞

2、存储型XSS,持久性XSSS,存储型XSS是最危险的一种跨站脚本漏洞,当攻击者提交一段代码后,被服务端接收并存储,当攻击者或用户再次访问某个页面时,这段XSS代码被程序读出来响应给浏览器,造成XSS跨站攻击
 

3、DOM型XSS   DOM型XSS注入和反射型的原理类似,只不过DOM型的XSS注入不需要经过后端代码处理,而是在前端Javascript调用DOM元素时可能产生的漏洞,可能触发DOM型XSS的javascript代码

总结:存储型XSS危害最大,因为他存储在服务器端,所以不需要我们和被攻击者有任何接触,只要被攻击者访问了页面就会遭受攻击,而反射型和DOM型需要我们去诱使用户点击我们构造的恶意URL,需要我们和用户有直接或间接的接触。

1.3 XSS漏洞危害 

1、窃取用户信息:攻击者可以通过XSS漏洞窃取用户的cookie或其他敏感信息,如账户密码,浏览历史,IP地址等,这些信息的泄露可能导致用户遵守财产损失或隐私被侵犯
2、会话劫持:通过篡改或窃取应用cookie,攻击者可以进行会话劫持,冒充真实用户访问受保护的资源
3、钓鱼攻击:XSS漏洞可以用于钓鱼攻击,将用户重定向到恶意网站,诱骗用户提供个人信息或登录凭证
4、中间人攻击:攻击者可以通过XSS漏洞代理转发流经攻击者的所有web流量,实施中间人攻击,窃取或篡改数据

5、恶意代码执行:XSS漏洞允许攻击者在受害者的浏览器中执行恶意Javascript代码,这不仅可以导致页面内容被篡改,还可能激活木马程序或其他恶意软件
6、蠕虫和病毒传播:存储型XSS漏洞,由于其持久化特性,容易造成蠕虫病毒的传播,进一步扩大攻击范围
7、破坏网站信息:通过在网站上注入恶意内容,XSS攻击可以破坏网站的信誉,导致用户流失。

 1.4 XSS漏洞的防范

1、输入验证:对所有用户输入进行严格的验证,确保他们符合预期的格式和类型。
2、输出编码:对于从服务器传递到客户端的数据,使用适当的编码方法(如HTML编码,Javascript编码或ULR编码)来防止恶意脚本的执行。
3、使用HTTPOnly Cookie:设置cookie属性为HTTPOnly,可以防止JavaScript访问cookie,从而较少XSS攻击的风险。
4、内容安全策略(csp):通过定义一个内容安全策略(CSP),限制网页可以加载和执行的内容来源,可以有效防止XSS攻击,CSP可以帮助阻止恶意脚本的执行,因为它限制了那些外部资源可以加载到页面上。
5、黑名单和白名单过滤:通过黑名单过滤已知的危险元素,如<script>标签和onerror属性等。同时,也可以采用白名单的方式,只允许预定义的安全元素存在

6、使用模板引擎的HTML转义功能:如果使用模板引擎生成HTML内容,应开启模板引擎自带的HTML转义功能,以防止恶意代码的注入。
7、避免内联事件:尽量不要使用内联事件处理函数.

 1.5 XSS各类别的区别

三者的区别
1、被被攻击对象不同
反射型的攻击对象是攻击者去寻找的
存储型的是广撒网的方式或者指定的方式,危害性更大范围更广
DOM型的被攻击对象其实和反射型XSS被攻击对象差不多,就是给攻击对象发送URL

2、解析位置不同
反射型脚本被解析的地方是浏览器
存储型脚本被解析的地方是服务器
DOM型也是浏览器,不同于反射型的是不需要联网

3、存储时间不同
反射型是一次性的

存储型是存储在服务器上

DOM型是允许输入的点不同

4、 位置不同

反射型一般是在搜索框或者是页面跳转等等
存储型一般是在浏览或者用户存储的位置
DOM是在DOM位置上,不取决于输入环境上

 

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

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

相关文章

Mamba入局遥感图像分割 | Samba: 首个基于SSM的遥感高分图像语义分割框架

文章目录 1、导读 2、背景 3、动机 4、方法 5、实验 6、总结 标题&#xff1a;《Samba: Semantic Segmentation of Remotely Sensed Images with State Space Model》论文&#xff1a;https://arxiv.org/abs/2404.01705源码&#xff1a;https://github.com/zhuqinfeng1999…

在展会上如何介绍产品和公司,柯桥俄语培训

1.Приглашаем Вас… 邀请您…… 2. Позвольте пригласить Вас… 请允许邀请您…… 3.Имеем честь пригласить Вас … 诚挚邀请您…… 4. Посылаем Вам приглашение на… 给您&#xff0…

Vue - 你知道Vue中key的工作原理吗

难度级别:中级及以上 提问概率:80% 在Vue项目开发中,并不推荐使用索引做为key,以为key必须是唯一的,可以使用服务端下发的唯一ID值,也不推荐使用随机值做为key,因为如果每次渲染都监听到不一样的key,那么节点将无法复用,这与Vue节省…

android gradle版本无法下载

android gradle版本无法下载问题解决方法 在引入一个新的android项目的时候&#xff0c;通常会因为无法下载gradle版本而一直卡在同步界面&#xff0c;类似于下面的情况。 这是因为gradle运行时首先会检查distributionUrlhttps://services.gradle.org/distributions/gradle-5.6…

JavaScript逆向爬虫——无限debugger的原理与绕过

debugger 是 JavaScript 中定义的一个专门用于断点调试的关键字&#xff0c;只要遇到它&#xff0c;JavaScript 的执行便会在此处中断&#xff0c;进入调试模式。 有了 debugger 这个关键字&#xff0c;就可以非常方便地对 JavaScript 代码进行调试&#xff0c;比如使用 JavaSc…

LeetCode-热题100:139. 单词拆分

题目描述 给你一个字符串 s 和一个字符串列表 wordDict 作为字典。如果可以利用字典中出现的一个或多个单词拼接出 s 则返回 true。 **注意&#xff1a;**不要求字典中出现的单词全部都使用&#xff0c;并且字典中的单词可以重复使用。 示例 1&#xff1a; 输入: s “leet…

从MySQL5.7平滑升级到MySQL8.0的最佳实践分享

一、前言 升级需求&#xff1a;将5.7.35升级到8.0.27, 升级方式 in-place升级【关闭现有版本MySQL&#xff0c;将二进制或包替换成新版本并在现有数据目录上启动MySQL并执行升级任务的方式&#xff0c;称为in-place升级】 原版本 5.7.35 CentOS Linux release 7.9.2009 新版本…

OpenHarmony实战开发-多设备自适应能力

介绍 本示例是《一次开发&#xff0c;多端部署》的配套示例代码&#xff0c;展示了页面开发的一多能力&#xff0c;包括自适应布局、响应式布局、典型布局场景以及资源文件使用。 说明&#xff1a; 自适应布局能力仅可以保证在外部容器大小在一定范围内变化时&#xff0c;容…

✌2024/4/3—力扣—整数转罗马数字

代码实现&#xff1a; 方法一&#xff1a;硬编码数字 const char *thousands[] {"", "M", "MM", "MMM"}; const char *hundreds[] {"", "C", "CC", "CCC", "CD", "D",…

STM32无刷电机全套开发资料(源码、原理图、PCB工程及说明文档)

目录 1、原理图、PCB、BOOM表 2、设计描述 2.1 前言 2.2 设计电路规范 3、代码 4、资料清单 资料下载地址&#xff1a;STM32无刷电机全套开发资料(源码、原理图、PCB工程及说明文档) 1、原理图、PCB、BOOM表 2、设计描述 2.1 前言 经过一个星期的画PCB&#xff0c;今…

C++模仿qq界面

#include "mywidget.h"MyWidget::MyWidget(QWidget *parent): QWidget(parent) {//设置窗口的大小this->resize(645,497);//设置窗口名字this->setWindowTitle("QQ");//设置窗口图标this->setWindowIcon(QIcon("C:\\zhouzhouMyfile\\qt_proj…

ChatGPT助力学术成就:打造完美论文技巧

ChatGPT无限次数:点击直达 ChatGPT助力学术成就&#xff1a;打造完美论文技巧 在当今信息爆炸的时代&#xff0c;学术研究对于每个领域的进步和发展至关重要。而在学术研究中&#xff0c;撰写高质量的论文是展示研究成果和贡献的重要方式之一。然而&#xff0c;许多学者在论文…

如何使用Excel搭建一套低值易耗品管理系统

低值易耗品是企业日常运营中不可或缺的一部分&#xff0c;虽然其单个价值不高&#xff0c;但因其使用频繁且数量众多&#xff0c;对其的管理同样重要。利用Excel搭建一套低值易耗品管理系统&#xff0c;不仅成本低廉&#xff0c;而且易于操作和维护。本文将指导您如何使用Excel…

【编程】Boost::geometry Polygon 常用应用代码记录(C++)

简介 本文的代码部分都比较简单容易 Boost Geometry 是 Boost C 库集合的一部分&#xff0c;定义了用于解决几何问题的概念、工具和算法。这个库比较常用&#xff0c;很多现成的函数都很实用且简单&#xff0c;本文记录一些常用的函数和操作&#xff0c;重复的功能以后还会用到…

python实例1.1:编写一个程序来计算并打印用户输入的数字列表的平均值(详解及其知识点拓展)

目录 一、主程序详细讲解 二、strip()和float()函数详细用法 三、try...except详细用法 四、列表用法及append使用方法详解 append() 方法 语法&#xff1a; 实例&#xff1a; 一、主程序详细讲解 下面是一个简单的Python程序&#xff0c;它可以接收用户输入的数字列表…

Rust---模式(Pattern)匹配

目录 模式是什么它用来做什么模式匹配和赋值为什么会有模式匹配模式匹配用在什么地方match 表达式if let表达式while let表达式for 循环let 语句函数参数不可驳模式匹配和可驳模式匹配模式是什么 在Rust中,模式(Pattern)是一种用于匹配和解构数据的语法结构。模式匹配中常用…

Mac运行不畅?一招教你轻松清理缓存,恢复流畅体验!

在日常使用Mac电脑时&#xff0c;面对系统运行速度下降或频繁卡顿的问题&#xff0c;不仅影响工作效率&#xff0c;用户体验也随之大打折扣。探究 Mac 运行变慢的背后原因&#xff0c;涵盖了一系列潜在因素&#xff0c;诸如存储空间接近极限、系统资源紧张、启动加载项过多等。…

LeetCode刷题--- 让字符串成为回文串的最少插入次数

让字符串成为回文串的最少插入次数 题目链接&#xff1a;让字符串成为回文串的最少插入次数 题目 给你一个字符串 s &#xff0c;每一次操作你都可以在字符串的任意位置插入任意字符。 请你返回让 s 成为回文串的 最少操作次数 。 「回文串」是正读和反读都相同的字符串。…

EN 14246:2006 吊顶石膏板检测

石膏板是建筑领域使用的一种主要产品&#xff0c;具有重量轻&#xff0c;强度较高&#xff0c;厚度较薄&#xff0c;易加工&#xff0c;绝热隔音和防火等性能&#xff0c;是目前市场上较为流行的轻型板材之一&#xff1b;主要用于墙板&#xff0c;吊顶&#xff0c;检修口等领域…

Java设计模式详解:抽象工厂模式

Java设计模式详解&#xff1a;抽象工厂模式 文章目录 Java设计模式详解&#xff1a;抽象工厂模式前言一、原理二、案例实战&#xff1a;打造一款汽车生产流水线三、使用场景四、与工厂模式的区别总结 前言 对于初学者来说&#xff0c;设计模式可能显得有些抽象和复杂&#xff…