CSRF漏洞与XSS、SSRF的区别

CSRF简介

CSRF (Cross-Site Request Forgery),即跨站请求伪造,也称为One Click Attack,一键攻击,因为其通常会通过一个图片或者链接并诱导用户去点击,当用户点击这个图片或者链接后(这个链接通常包含了一些攻击性的操作和参数,即所谓的伪造的请求)就会以用户的身份向服务器发起这个伪造的请求,服务器收到这个伪造的请求后,就会认为是用户自己许可的操作,导致用户数据丢失等。

由于CSRF是伪造用户请求,并且以用户的身份向服务器发起请求,导致用户数据丢失,所以用户必须先登录获取对应的登录cookie之后,伪造的请求才会生效,才会导致用户数据丢失。

所以CSRF攻击的前提是:

  • 用户必须先登录信任网站,并且在本地生成对应的cookie;
  • 在用户没有登出的情况下,访问了危险网站;

DVWA-Low演示

1、首先输入两个不同的密码查看页面的回显,发现URL回显了具体值

image-20240724161426695

2、那我们直接在URL上修改密码,发现直接修改成功了,这就是最简单的CSRF。

image-20240724161543833


CSRF与SSRF、XSS的区别

XSS:通过在网页中嵌入恶意的客户端脚本(通常是JavaScript)进行攻击。例如,在论坛发帖中插入一段恶意的JavaScript代码,这段代码如果包含请求外部服务器的内容,就是一种XSS攻击!

CSRF:也叫XSRF,是一种伪装成用户的攻击手段。在用户不知情的情况下,攻击者(由客户端发起)会发送一些用户本不愿意发出的请求,如恶意发帖、删帖、改密码、发邮件等。

SSRF:一种由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下,SSRF是要目标网站的内部系统。(因为他是从内部系统访问的,所有可以通过它攻击外网无法访问的内部系统,也就是把目标网站当中间人或者跳板

XSS与CSRF的区别

很多人容易混淆XSS和CSRF,虽然它们经常一起提及,但实际上是两种不同的攻击方式,目的也不同。

  • XSS:主要是一种技术手段,通过在网页中注入恶意脚本来攻击。
  • CSRF:则是一种攻击形式,通过伪造用户的请求来达到攻击目的。

通常情况下,CSRF攻击是通过XSS实现的,这也是为什么CSRF有时被称为XSRF(用XSS手段实现的伪造请求)。

不过,CSRF不一定要通过XSS来实现,也可以通过其他方式,如直接使用命令行伪造请求,只要通过合法验证即可。

  • XSS:重点在于如何实现(写一段恶意JavaScript脚本注入到网页中,用户访问后就会触发)。
  • CSRF:重点在于结果(只要发送了伪装成用户的请求,就是一次CSRF攻击)。

CSRF 与 XSS 的根本差异

相同点CSRF和XSS都是客户端攻击,它们滥用同源策略,利用web应用程序和不知情的用户之间的信任关系。

差异

1、XSS攻击遵循双向攻击模式,允许攻击者执行恶意脚本、访问响应,并将后续敏感数据发送到攻击者选择的目的地。

CSRF是一种单向攻击机制,这意味着攻击者只能发起HTTP请求,但不能检索已发起请求的响应。

2、CSRF攻击要求经过身份验证的用户处于活动会话中,而XSS攻击则不需要。

在XSS攻击中,只要用户登录,就可以存储和交付有效载荷。

3、CSRF攻击的范围有限,仅限于用户可以执行的操作,例如点击恶意链接或访问黑客的网站。

相反,XSS攻击提供执行恶意脚本来执行攻击者所选择的任何活动,从而扩大了攻击的范围。

针对的攻击目标

SSRF针对服务器

CSRF针对用户

XSS针对客户端浏览器

攻击方式

  • XSS攻击者通常通过反射型XSS、存储型XSS和DOM型XSS三种方式来实现。

    反射型XSS是将恶意脚本嵌入到网页中,当用户访问该页面时,脚本被执行;

    存储型XSS是将恶意脚本存储在目标网站的数据库中,当其他用户访问受影响的页面时,脚本被执行;

    DOM型XSS是通过修改页面的DOM结构来执行恶意脚本。

  • SSRF让服务器发起针对内网的请求

  • CSRF欺骗用户点击恶意链接访问网站

防御方式

SSRF:

1、需要禁用一些没有必要开放的端口和协议;

2、限制用户的输入;

3、只允许用户选择预定义的URL;

4、使用白名单进行过滤;

5、只允许受信任的用户访问已知的安全的目标网站和URL;

6、禁止页面跳转;

7、限制内网的访问权限

CSRF:

1、采用Token、Referer进行验证

2、尽量使用GET请求

3、使用SameSite Cookie属性增强Cookie的安全性,不让其随跨站请求而发送

4、验证码登录

XSS:

1、输入验证:对用户输入的数据进行过滤和校验,防止恶意脚本的注入。

2、HttpOnly标记:在设置Cookie时,添加HttpOnly标记,防止恶意脚本通过document.cookie获取Cookie信息。

3、使用CSP(内容安全策略)设置,限制浏览器执行某些资源的来源,使攻击者无法注入有害代码。

4、输出编码:对输出到Web页面的数据进行编码,防止恶意脚本的执行。

5、使用安全的框架和库,如ASP.NET MVC、Spring Security等。


参考文章:javascript - 用大白话谈谈XSS与CSRF - 傍晚八点半 - SegmentFault 思否

  • 15
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值