XSS与CSRF的区别

1.CSRF

CSRF(Cross-site request forgery):跨站请求伪造

2.CSRF的攻击原理

在这里插入图片描述
用户是网站A的注册用户,且登录进去,于是网站A就给用户下发cookie。

从上图可以看出,要完成一次CSRF攻击,受害者必须满足两个必要的条件:

(1)登录受信任网站A,并在本地生成Cookie。(如果用户没有登录网站A,那么网站B在诱导的时候,请求网站A的api接口时,会提示你登录)

(2)在不登出A的情况下,访问危险网站B(其实是利用了网站A的漏洞)。

我们在讲CSRF时,一定要把上面的两点说清楚。

cookie保证了用户可以处于登录状态,但网站B其实拿不到 cookie。

3、CSRF如何防御

方法一、Token 验证:(用的最多)

(1)服务器发送给客户端一个token;

(2)客户端提交的表单中带着这个token。

(3)如果这个 token 不合法,那么服务器拒绝这个请求。

方法二:隐藏令牌:

把 token 隐藏在 http 的 head头中。

方法二和方法一有点像,本质上没有太大区别,只是使用方式上有区别。

方法三:Referer 验证:

Referer 指的是页面请求来源。意思是,只接受本站的请求,服务器才做响应;如果不是,就拦截。

1、XSS

XSS(Cross Site Scripting):跨域脚本攻击。

XSS的攻击原理

XSS攻击的核心原理是:不需要你做任何的登录认证,它会通过合法的操作(比如在url中输入、在评论框中输入),向你的页面注入脚本(可能是js、hmtl代码块等)。

最后导致的结果可能是:

盗用Cookie破坏页面的正常结构,插入广告等恶意内容D-doss攻击

XSS的攻击方式

1、反射型

发出请求时,XSS代码出现在url中,作为输入提交到服务器端,服务器端解析后响应,XSS代码随响应内容一起传回给浏览器,最后浏览器解析执行XSS代码。这个过程像一次反射,所以叫反射型XSS。

2、存储型存

储型XSS和反射型XSS的差别在于,提交的代码会存储在服务器端(数据库、内存、文件系统等),下次请求时目标页面时不用再提交XSS代码。

3.DOM型XSS

基于DOM型XSS是不需要与服务器端交互的,它只发生在客户端处理数据阶段。

存储型XSS与反射性、DOM型XSS的最大区别在于:反射型XSS和DOM型XSS都必须依靠手动触发,而存储型XSS不需要。

XSS的防范措施(encode + 过滤)

1、编码:

对用户输入的数据进行编码

2、过滤:

移除用户输入的和事件相关的属性

如onerror可以自动触发攻击,还有onclick等。(总而言是,过滤掉一些不安全的内容)移除用户输入的Style节点、Script节点、Iframe节点。(尤其是Script节点,它可是支持跨域的呀,一定要移除)。

3、校正

避免直接对HTML Entity进行解码。使用DOM Parse转换,校正不配对的DOM标签

CSRF 和 XSS 的区别

区别一:

CSRF:需要用户先登录网站A,获取 cookie。

XSS:不需要登录。

区别二:(原理的区别)

CSRF:是利用网站A本身的漏洞,去请求网站A的api。

XSS:是向网站 A 注入 JS代码,然后执行 JS 里的代码,篡改网站A的内容。
  • 9
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
XSS(跨站脚本攻击)和 CSRF(跨站请求伪造)是两种常见的网络安全攻击方式,它们的目标和实现方式不同。 XSS攻击主要针对的是网页应用中存在的漏洞,攻击者通过注入恶意的脚本代码到网页中,使得用户在浏览网页时执行该恶意代码,从而达到攻击的目的。XSS攻击可以分为存储型、反射型和DOM型三种形式。存储型XSS攻击是将恶意代码存储到服务器端,当用户访问包含恶意代码的页面时,恶意代码会从服务器端获取并执行;反射型XSS攻击是将恶意代码作为URL参数或表单提交到服务器端,服务器端将恶意代码返回给浏览器并执行;DOM型XSS攻击则是通过修改网页的DOM结构来实现攻击。 CSRF攻击则是利用用户已经登录认证的状态下,诱使用户点击恶意链接或访问恶意网页,从而触发已登录用户的操作。攻击者通过伪造请求,使用户在不知情的情况下执行了非自愿的操作。例如,攻击者可以通过发送包含恶意请求的图片链接或者钓鱼网站来实施CSRF攻击。CSRF攻击的关键在于利用了用户的身份认证信息。 综上所述,XSSCSRF的主要区别在于攻击的目标和实现方式。XSS攻击主要针对网页应用中的漏洞,注入恶意脚本代码;而CSRF攻击则利用用户已登录认证的状态下,伪造请求进行非自愿的操作。为了防范这两种攻击,开发者需要在编写代码时注意输入验证、输出编码以及限制权限等安全措施。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值