csrf原理及分类
csrf说白了就是盗用用户的身份,以你的名义发送恶意请求,对服务器来说这个请求是完全合法的,但是却完成了攻击者所期望的一个操作,比如以你的名义发送邮件、发消息,盗取你的账号,添加系统管理员,甚至于购买商品、虚拟货币转账等
如果应用程序对用户提供的url和远端服务器返回的信息没有进行合适验证和过滤,就可能存在这种服务器端请求伪造的缺陷。
get型:只需要构造URL,然后诱导受害者访问利用。
post型:需要构造自动提交或点击提交的表单,然后诱导受害者访问或点击利用。
防御
A:验证 HTTP Referer 字段;
在 HTTP 头中有一个字段叫 Referer,它记录了该 HTTP 请求的来源地址。
这种方法的显而易见的好处就是简单易行,网站的普通开发人员不需要操心 CSRF 的漏洞,只需要在最后给所有安全敏感的请求统一增加一个拦截器来检查 Referer 的值就可以。每个浏览器对于 Referer 的具体实现可能有差别,并不能保证浏览器自身没有安全漏洞。使用验证 Referer 值的方法,对于某些浏览器,比如 IE6 或 FF2,目前已经有一些方法可以篡改 Referer 值。
即便是使用最新的浏览器,黑客无法篡改 Referer 值,这种方法仍然有问题。因为 Referer 值会记录下用户的访问来源,有些用户认为这样会侵犯到他们自己的隐私权,特别是有些组织担心 Referer 值会把组织内网中的某些信息泄露到外网中。因此,用户自己可以设置浏览器使其在发送请求时不再提供 R