一、定义
Cross-Site Request Forgery跨站请求伪造
1.跨站点的请求
2.请求是伪造的(假装可信)
尽管听起来像跨站脚本(XSS),但它与XSS非常不同,XSS利用站点内的信任用户,而CSRF则通过伪装成受信任用户请求受信任的网站。
你可以这么来理解:攻击者盗用了你的身份,以你的名义发送恶意请求,对服务器来说这个请求是完全合法的,但是却完成了攻击者所期望的一个操作,比如以你的名义发送邮件、发消息,盗取你的账号,添加系统管理员,甚至于购买商品、虚拟货币转账等
正常的csrf攻击,基于增删改等操作(基于操作的csrf)
二、csrf分类
1、GET类型的csrf
仅仅只需要一个HTTP请求,就能够构建一次简单的csrf。
2、POST类型的csrf
对于攻击者来说,若干种方法可以构造出一个POST请求。最简单的方法,就是在一个页面中构造好一个表单表单,然后使用JavaScript自动提交这个表单。
提醒:如果抓取一个正常请求的数据包,没有referer字段和token,就很有可能存在csrf漏洞。
三、如何防御csrf
1、验证码
2、在请求地址添加taken并验证
3、在HTTP头中自定义属性并验证
4、验证HTTP referer字段