文档章节

带你了解CSRF和XSS(二)

o
 osc_w9s1w4o0
发布于 2019/04/01 11:51
字数 1475
阅读 6
收藏 0

精选30+云产品,助力企业轻松上云!>>>

什么是CSRF?

    CSRF(Cross-site request forgery)跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。尽管听起来像跨站脚本(XSS),但它与XSS非常不同,XSS利用站点内的信任用户,而CSRF则通过伪装成受信任用户的请求来利用受信任的网站。

 

CSRF攻击的本质原因:

    CSRF攻击是源于Web的隐式身份验证机制!Web的身份验证机制大致就是说为了防止用户每次发送请求的时候都需要登录,在进行一次登录验证通过后,之后发向该域名的请求都会自动带上cookie。虽然可以保证一个请求是来自于某个用户的浏览器,但却无法保证该请求是用户批准发送的。CSRF攻击的一般是由服务端解决,而XSS主要是由客户端解决。

    

CSRF攻击的原理:

    1. 用户打开浏览器,访问受信任网站A,输入用户名和密码请求登录网站A。

    2.在用户信息通过验证后,网站A产生Cookie信息并返回给浏览器。

    3. 用户在未退出网站A之前,在同一浏览器中,打开一个TAB页访问网站B。

    4. 网站B接收到用户请求后,发出一个访问网站A的请求。

    5. 浏览器根据网站B的请求,在用户不知情的情况下携带Cookie信息,向网站A发出请求。网站A并不知道该请求其实是由B发起的,所以会根据用户的Cookie信息处理该请求,达到模拟用户操作的目的。

 

    tips:Session Cookie(在浏览器关闭后,就会失效,保存到内存)

           Third-party Cookie(关闭浏览器后,不会失效,保存到本地)

 

常见的CSRF攻击:

  1. Get请求,操作数据库内容
    比如网站A的修改密码接口是GET方式,通过调用api/ChangePassword?psw=123就可以进行密码的修改,所以在开发的过程中如果涉及到数据改动都建议采用POST请求

  2. 隐藏表单提交POST请求
    单纯的POST当然也是能伪造的,JS利用form表单可以跨域请求的特性的提交POST请求仍然能够产生CSRF攻击。

  3. 如果网站A有使用Flash,并将跨域策略文件中的allow-access-from domain设置为素有,也是有可能产生CSRF攻击的。

  4. XSRF
    通常来说CSRF是由XSS实现的,所以CSRF时常也被称为XSRF,用XSS的方式实现伪造请求,比如网站A存在XSS漏洞,被注入恶意代码后,当有用户访问到有恶意代码的网页的时候,就会发送一条类似转账,关注啊之类的请求,做到XSRF攻击。

    

 

    看完这几种攻击方式,大概应该能辨别什么时候是CSRF攻击了,简单说就是只要发起了冒牌请求那么就算是CSRF(XSRF)

 

    顺便再总结下XSS和CSRF的其他区别,面试官可能会问到哦~

    区别一,发生位置

        XSS:发生在客户端

        CSRF:发生在服务端

    区别二,原理

        XSS:注入代码,执行代码,篡改内容

        CSRF:携带Cookie模拟请求

    区别三,根源

        XSS:同源策略机制

        CSRF:Web隐式身份验证机制

    区别四,就Cookie而言

        XSS:盗取Cookie来干坏事

        CSRF:借用Cookie来干坏事

 

最后还是要说下如何防范CSRF攻击

    一、Referer(记录 HTTP 请求的来源地址) Check

         好处是只需要增加一个拦截器来检查 Referer ,用于过滤非该服务器域名的地址,不需要改变当前系统的任何已有代码和逻辑,非常快捷。

        但是,Referer 的值是由浏览器提供的,虽然 HTTP 协议上有明确的要求,但是每个浏览器对于 Referer 的具体实现可能有差别,并不能保证浏览器自身没有安全漏洞。使用验证 Referer 值的方法,就是把安全性都依赖于第三方(即浏览器)来保障,不是很靠谱,并且一些低版本的浏览器像IE6等有方法对Referer 进行篡改。还有重要的一点是,用户可以设置浏览器不携带 Referer字段。

 

    二、验证码

        强制用户必须与应用进行交互,才能完成最终请求。在通常情况下,验证码能很好遏制CSRF攻击。但是出于用户体验考虑,网站不能给所有的操作都加上验证码。因此验证码只能作为一种辅助手段,不能作为主要解决方案。

 

    三、Token

        在 HTTP 请求中以参数的形式添加一个随机产生的 token,并在服务器端建立一个拦截器来验证这个 token,假设请求中没有 token 或者 token 内容不对,则觉得可能是 CSRF 攻击而拒绝该请求。并且涉及数据库操作的接口使用POST,因为GET不好加Token,会暴露Token的保密性。

    关于Token

  • Token 应该保存到 local / session stograge(不会跨域工作) 或者 cookies

  • Tokens 除了像 cookie 一样有有效期,还要提供过期重新获取、强制刷新、撤回等操作

  • 有需要的话,要加密并且签名 token

  • 将 JSON Web Tokens(JWT) 应用到 OAuth 2

 

    四、HTTP 头中自定义属性并验证

        类似方法三,只不过不是以参数形式,而是请求头字段携带Token信息。但是要把所有请求都改为 XMLHttpRequest 请求。

 

    至此,有关XSS和CSRF的内容都讲解完毕了,感谢大家抽空阅读。

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
关于我学XSS躺过的那些坑

XSS字符编码 在学习编码绕过时由于数量多,类型相似,不太容易记得住,记得全,故做此记录。 <!--more--> 0x01 Html标签属性中执行 简单了解: Html标签属性中的XSS问题多属于javascript伪协...

osc_a22drz29
2019/03/24
3
0
xss攻击和csrf攻击的定义及区别

1.CSRF的基本概念、缩写、全称 CSRF(Cross-site request forgery):跨站请求伪造。 PS:中文名一定要记住。英文全称,如果记不住也拉倒。 2.CSRF的攻击原理 用户是网站A的注册用户,且登录...

osc_apxdqf08
2019/04/22
2
0
即将放出ITSEC第一期所有培训视频

课程大概被分为三个章节 客户端安全培训 安全工具培训 服务端安全培训 部分PPT 详细课程表 FireBug代码调试工具使用:工具介绍 FireBug代码调试工具使用:DOM选项卡 FireBug代码调试工具使用:...

y0umer
2014/10/12
0
0
xss攻击和csrf攻击的定义及区别

1.CSRF的基本概念、缩写、全称 CSRF(Cross-site request forgery):跨站请求伪造。 PS:中文名一定要记住。英文全称,如果记不住也拉倒。 2.CSRF的攻击原理 用户是网站A的注册用户,且登录...

osc_4nbpryu9
2019/07/04
5
0
前端安全之XSS和csrf攻击

1.Csrf攻击概念: csrf攻击(Cross-site request forgery):跨站请求伪造; 2.Csrf攻击原理: 用户是网站A的注册用户,且登录进去,于是网站A就给用户下发cookie。 从上图可以看出,要完成一次C...

osc_djpzrdiv
2019/05/24
2
0

没有更多内容

加载失败,请刷新页面

加载更多

dict.items()和dict.iteritems()有什么区别?

问题: Are there any applicable differences between dict.items() and dict.iteritems() ? dict.items()和dict.iteritems()之间是否有适用的区别? From the Python docs: 从Python文档中......

法国红酒甜
37分钟前
20
0
R中“ =”和“ <-”赋值运算符有什么区别?

问题: What are the differences between the assignment operators = and <- in R? R中赋值运算符=和<-之间有什么区别? I know that operators are slightly different, as this example ......

fyin1314
今天
20
0
之间的区别 和

问题: I'm learning Spring 3 and I don't seem to grasp the functionality behind <context:annotation-config> and <context:component-scan> . 我正在学习Spring 3,并且似乎不太了解<......

javail
今天
15
0
业内首款,百度工业视觉智能平台全新亮相

本文作者:y****n 业内首款全国产化工业视觉智能平台——百度工业视觉智能平台亮相中国机器视觉展(Vision China),该平台所具有的核心AI能力完全自主可控,在质检、巡检等场景中具有高效、...

百度开发者中心
昨天
7
0
我们如何制作xkcd样式图? - How can we make xkcd style graphs?

问题: Apparently, folk have figured out how to make xkcd style graphs in Mathematica and in LaTeX . 显然,民间已经想出了如何在Mathematica和LaTeX中制作xkcd风格的图形。 Can we d......

富含淀粉
今天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部