前言
最近为了学习XSS看了一个JS的教程,感觉自己对于XSS的理解更深刻了一些,所以想要写一写关于XSS的知识汇总。
那说道XSS的学习,CSRF怎能不谈,下面就来谈一谈CSRF。
什么是CSRF
百度百科上面的解释为:CSRF(Cross-site request forgery跨站请求伪造,也被称为”One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。尽管听起来
像跨站脚本(XSS),但它与XSS非常不同,并且攻击方式几乎相左。XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。与XSS攻击相比,CSRF攻击往
往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比XSS更具危险性。
下面谈谈我对CSRF的个人理解:我认为,CSRF就是一种攻击手法,通过伪造一些表单或者请求,来让登陆过的用户进行点击,当用户点击过后,就达到了攻击者的目的。利用情况通常在一些
个人信息修改,修改密码的部分,就是登陆过的用户可以进行的操作。
下面是加深理解的一张图。
有些人可能会问了,这是怎么回事呢?
下面将会带你进入CSRF课堂。
CSRF原理课堂~
首先,在我们访问一个网站的时候,其实我们是发送一个HTTP/HTTPS请求,然后服务器返回一个返回包,经过浏览器解析,我们才可以看到那么生动的网页。
而当我们登陆一个网站并且修改自己的个人信息的时候,其实我们也是发送一个HTTP/HTTPS的请求包。就像下面这样。
1 | POST /api/modify HTTP/1.1 |
而我们点击别人发来的网页或者表单的时候,其实也是发送这个请求。
那么发送这个请求需要什么?从上面可知,除了cookie之外,其他的数据攻击者都是可以构造的,所以,要想达到CSRF的目的,只要获得被攻击者的cookie即可。
当我们点击有着CSRF攻击的页面,其实就是用我们的cookie发送这个修改个人信息的请求。这就是CSRF,你听懂了么。
攻击与防御是一对深爱着的情人,说了攻击方法,怎能少的了防御手法。
下面来谈一谈
CSRF的防御手法
1:验证码(但是考虑到什么操作都要验证码,用户体验太差)
2:Refer头,就是验证前一个网页是从哪里来的,当前一个网页符合条件,才能进行下面的操作。
3:Token,必须随机,要让攻击者无法猜到即可。(一些框架里自带Token)
这里要补充一个更加强大的攻击手法。XSRF
XSRF就是XSS+CSRF。被称作XSRF
通过XSS获取Token来达到CSRF的操作。
对于 CSRF的谈论就是这些了。说了CSRF,同样,我们来说说CRLF
同样的开头
什么是CRLF
百度百科的解释:CRLF – Carriage-Return Line-Feed 回车换行
什么?简单的回车换行,你在逗我?
当然不是在逗你了,的确,这也是一个漏洞来着。主要是利用了HTTP协议来达到攻击的目的。
上面我们也说过,当我们访问一个网页的时候,其实是一个发送HTTP请求的过程。如果我们加入一些代码那会如何,说干就干。%0a%0d
就是\r\n
的url编码
https://twitter.com/login?redirect_after_login=123%0a%0d%0a%0d%3Cimg%20src=1%3E
上面的请求会在返回包中加入一个<img src=1>
,如果换一个XSS代码是不是就是一个XSS漏洞了呢?
好了,CSRF就是这样。