CSRF——跨站请求伪造

一、CSRF是什么
CSRF,全称:Corss-site request forgery,中文名称:跨站请求伪造。CSRF攻击比XSS攻击更具危险性,被安全界称为“沉睡的巨人”。


二、CSRF可以做什么
攻击者通过一定手段盗取合法用户在某个网站上的登录信息,然后以该合法用户的身份模拟发送各种请求。


三、CSRF的原理


(图片来自:https://www.cnblogs.com/hyddd/archive/2009/04/09/1432744.html
要完成一次CSRF攻击,受害者必须依次完成两个步骤:
1. 登录受信任网站A,并在本地生成cookie。
2. 在不退出网站A的情况下,访问危险网站B。
CSRF攻击主要是因为Web的隐式身份验证机制,Web的身份验证机制虽然可以保证一个请求是来自某个用户的浏览器,但却无法保证该请求是用户批准发送的。


四、CSRF的防御

1. 正确使用GET、POST和Cookie请求方法,严格规定什么请求只能使用GET方法,什么请求只能使用POST方法,这样可以防止攻击者使用GET请求来模拟POST请求,从而轻易达到攻击目的。
2. 设置一些存放在cookie以外的验证信息。例如,可以在GET请求地址后追加一个伪随机数,POST请求则将其添加在表单的隐藏字段中,作为token去请求后端,这个token可以存储在session中,并定期更新。这个方法的难点在于如何将token加入到每一个请求中。
3. 验证http请求头的Referer字。http请求头的Referer字段记录了当前http请求的来源地址,如果黑客要进行CSRF攻击,只能在他自己的网站上构造请求,所以如果http请求头的Referer字段指向其他网站,则可能是CSRF攻击,拒绝请求即可防御CSRF攻击。该方法的好处是简单易行,缺点则是http请求头的Referer字段值可能被篡改,合法用户的请求也可能不提供改字段。
4. 在http请求头中自定义属性并验证。

原文地址:https://www.cnblogs.com/wujuntian/p/12008425.html