一文了解XSS,CSRF,SSRF的区别

文章介绍了XSS(跨站脚本攻击)、CSRF(跨站请求伪造)和SSRF(服务器端请求伪造)的概念、工作原理以及它们之间的区别。XSS利用浏览器解析JS代码进行攻击,分为反射型、存储型和DOM型。CSRF是攻击者利用用户的登录凭证进行非法操作,而SSRF则是攻击者通过服务器发起攻击。这三种攻击都是Web安全中的重要威胁。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:

本文章主要介绍一下关于XSS,CSRF,SSRF的区别

目录

前言:

一、XSS

XSS的概述

XSS的原理

XSS的分类

二、CSRF

CSRF概述

CSRF原理

三、SSRF

SSRF概述

SSRF原理

四、XSS,CSRF,SSRF区别


 

一、XSS

XSS的概述

说到XSS首先我们得知道什么是XSS,XSS全称Cross-site Scripting也就是跨站脚本攻击,这么看是不是应该念成CSS呢,但是由于在前端有一种网页技术叫CSS,学过前端开发的小伙伴应该知道CSS,这里不知道的也可以去拓展一下什么是CSS,那么言归正传为了防止混淆,故我们将Cross-site Scripting称之为XSS,在Web安全里,XSS跨站脚本攻击一直被OWASP组织评为安全漏洞危害TOP10里。

XSS的原理

简单来说XSS是利用浏览器具有能够解析JS代码的功能,恶意攻击者将恶意的JS代码嵌入Web页面,当用户浏览至此时,页面会将恶意者嵌入Web页面里的JS代码解析出来,从而达到攻击的效果,可能是个简单的恶作剧弹窗,也可能是能够窃取用户信息的恶意代码

XSS的分类

XSS一般被分为三类:反射性XSS,存储型XSS,DOM型XSS

这三种类型的危害程度一般认为:存储型XSS>反射型XSS>DOM型XSS

类型 
反射型XSS反射型XSS我们可以理解为一次性的XSS,一般是通过url请求中插入JS代码,然后随着浏览器通过响应的方式传给用户,也可能是通过站内信息,比如聊天框中没有对输入过滤,输出转义,然后攻击者将恶意的JS代码发送给受害者,从而达到窃取用户信息比如cookie的目的。
存储型XSS存储型XSS我们可以理解为持续性的XSS,比如用户输入的信息会在服务器的后台存储,服务器并没有严格对输入过滤,输出转义的配置的话,那么一段恶意的JS将永久存储在服务器中,举个例子,我们都玩过论坛,贴吧之类的社区网站,此时有个攻击者将恶意的JS代码插入留言板内,那么只要是有人浏览至带有恶意JS代码的评论区内时,恶意的JS代码就会被浏览器信息解析,那么用户的信息就可能被攻击者窃取。如果此时管理员浏览至此,是不是cookie就会被窃取,攻击者就可以通过窃取的管理员cookie登录后台。所以XSS中存储型的危害最为致命,某歌曾经就有过存储型XSS漏洞。
DOM型XSSDOM型XSS是个特殊型的XSS,它是基于文档对象型Document Object Model的一种漏洞,DOM是一个与平台编程语言无关的接口,对于浏览里而言DOM文档就是一份XML文档,由客户端的脚本通过DOM动态地输出数据到页面而不是依赖于将数据提交给服务器端,而从客户端获得DOM中的数据在本地执行,因而仅从服务器端是无法防御的。

二、CSRF

CSRF概述

CSRF全称cross-site request forgery跨站请求伪造,也被称为one click Attack(一键攻击) 或者是Session riding(会话骑行)是一种对网站的恶意利用,简单来说CSRF是攻击者盗用了你的登录信息,以你的身份模拟发送各种数据,对于服务器来说这些是以你来发送的所以是合法的,但实际上这些操作你并不知道,很懵对不对,没关系,简单来说你在酒店开了一间房,房间号为111,但是对于前台服务员他每天接受的客流量太大了,他只能通过111房卡知道你是111的住户,然后攻击者通过某种操作盗用了你的111房卡,他拿着你的房卡去刷你的门在前台服务员看来是合法的,进了你的房间想在你的房间干嘛就干嘛,比方说在你的房间里搞破坏,差不多这个意思。

CSRF原理

那么CSRF的原理呢,就是

1,受害者打开浏览器访问受信任的网站A,输入正确的用户密码后发送登录请求

2,网站A这时候看到是受害者发来的验证请求,产生了一个cookie给你,然后这个cookie就是你的身份标识

3,此时受害者在没有退出网站A时,在同一个浏览器(这里时重点,不同的浏览器的cookie是不通用的)打开了攻击者的钓鱼的网站B

4,网站B收到受害者的请求后,返回一些恶意的代码,并要求受害者向网站A发送请求(此时受害者并不知道这一系列过程)

5,这时候受害者向网站A发送了一个请求并执行了相关操作(实际上是B网站发送的但是带着的是受害者的cookie,所以服务器看来这只是一次受害者发送的合法请求)简单来说就是攻击者冒用了你的身份信息做了服务器看起来合法的操作

那么要完成一次CSRF攻击必须满足几个条件:

1,受害者登录受信任的网站A,并在本地生成了cookie

2,受害者在不登出网站A时,访问了攻击者的网站B

3,必须时同一个浏览器内,因为不同浏览器之间的cookie是不能互相使用的

三、SSRF

SSRF概述

SSRF全称就是Server-Side Request Forgery服务器端请求伪造,简单来说CSRF是盗用客户端的身份信息的话,SSRF就是伪造服务器的身份信息进行相关操作,也就是攻击者利用某某的公司的身份当作跳板来进行各种骚操作,也就是说我可以利用服务器作为我的代理进行对其它任意服务器进行攻击,也可以对该服务器本身的私网进行扫描等等一系列行为

SSRF原理

原理简单来说就是服务端提供了从其它服务器获取数据的功能,但没有对内网目标地址做过滤与限制,比如某道翻译,早些时候可以通过输入相应的IP地址进行翻译,那么此时就变成攻击者请求某道翻译某网站,那么某道将会向某网站发送一次请求,这样能理解吧,那如果我们向某道翻译请求的是127.0.0.1网站呢,总所周知127.0.0.1是个回环地址,那么如果某道翻译并没有对这个传参进行过滤,那么攻击者就可以轻易的获取到某道的内部信息了呢。

四、XSS,CSRF,SSRF区别

一句话简单概述

XSS可以理解为攻击者窃取用户的身份信息进行操作

CSRF可以理解为攻击者没有窃取用户身份信息但是他通过其它手段获取了你的一次性身份信息的利用进行操作

SSRF可以理解为攻击者利用服务器的不严谨的过滤限制,将服务器当作跳板利用进行操作

 

### XSSCSRFSSRF的安全漏洞对比 #### 跨站脚本攻击 (XSS) 跨站脚本攻击是指当Web应用程序对用户输入的数据未做充分验证或转义时,允许攻击者将恶意脚本注入到网页中。这些脚本会在其他用户的浏览器上执行,从而窃取敏感数据、会话令牌或是实施钓鱼攻击等行为[^3]。 例如,在一个存在反射型XSS漏洞的应用程序里: ```javascript // 用户提交了一个带有JavaScript代码的查询参数 ?search=<script>alert('XSS')</script> ``` 如果该应用直接回显此输入而不加处理,则任何访问含有上述链接的人都会被弹窗警告框打扰。 #### 跨站请求伪造 (CSRF) 跨站请求伪造涉及诱导已认证过的受害者无意间发起由攻击者精心构造的操作指令给目标服务端。这是因为大多数HTTP请求都会自动附带存储于浏览器中的凭证信息(比如Cookies),即使是在非预期的情况下发出的请求也不例外。因此,只要能诱骗合法用户点击特定链接或者加载某个图片资源就可能触发一次成功的CSRF攻击[^1]。 考虑这样一个场景——银行转账功能页面没有采用有效的防护措施防止CSRF: ```html <!-- 攻击者的恶意网站 --> <img src="https://bank.example.com/transfer?to=attacker&amount=1000" /> ``` 一旦已经登录过网上银行系统的客户浏览到了这个图像标签所在的HTML文档,就会立即向其开户行发送一笔金额为一千元人民币的资金转移命令。 #### 服务器端请求伪造 (SSRF) 服务器端请求伪造指的是应用程序接受并转发来自客户端指定位置的内容读取请求,而未能对外部可控制部分加以适当审查便予以响应的行为模式。这种缺陷使得远程对手能够借助受害主机作为中介绕开防火墙限制进而探测内部网络结构甚至发动进一步侵害活动[^2]。 设想某API接口允许上传文件的同时也支持自定义下载源地址选项却没有设置白名单机制的话, ```python import requests def fetch_remote_file(url): response = requests.get(url) # 缺乏必要的安全性检查 with open('/tmp/fetched', 'wb') as f: f.write(response.content) ``` 此时,调用方完全可以传入私有IP段内的路径致使后端机器尝试建立连接最终造成潜在危害。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值