前言

最近为了学习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
2
3
4
5
6
7
8
9
10
11
POST /api/modify HTTP/1.1
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:54.0) Gecko/20100101 Firefox/54.0
Accept: */*
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate, br
Content-Type: application/json
Content-Length: 69
Cookie: id=123
Connection: close

{"name":"xiaoli","email":"[email protected]"}

而我们点击别人发来的网页或者表单的时候,其实也是发送这个请求。

那么发送这个请求需要什么?从上面可知,除了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就是这样。