前言:前几天我们一起学习了XSS攻击,今天学习的CSRF与XSS有点相似,但事实上完全不是一回事到后期可能有一些结合的点。希望大家认证学习, 加以区分
CSRF
中文是跨站点请求伪造,CSRF攻击者在用户已经登录目标网站之后,诱导用户访问一个攻击页面利用目标网站对用户的信任。以你的身份在攻击页面对目标网站发起伪造用户操作的请求,比如以你的名义发送邮件、发消息、盗取你的账号等等
CSRF与XSS最大的区别就在于,CSRF并没有盗取你的cookie而是直接利用
攻击场景:
web a 为存在漏洞的网站,web b为攻击者构建的恶意网站,user c为web a 网站的合法用户。
1.用户c打开浏览器,访问受信任网站a,输入用户名、密码登录
2.在用户信息通过验证后,网站a产生cookie信息并返回给浏览器,此时用户登录网站a成功,可以正常发送请求到网站a
3.用户在未退出网站a之前,在同一浏览器中,打开一个TAB页面访问网站b
4.网站b收到用户请求后,返回一些攻击性代码,并发出一个请求要求访问第三方站点a
浏览器在收到这些攻击性代码后,根据网站b的请求,在用户不知情的情况下携带cookie信息,向网站a发送请求,网站a并不知道该请求是由b发起的,所以会根据用户c的cookie信息以c的权限处理该请求,导致来自网站b的恶意代码被执行。
条件:
现实场景下,这种方法需要实现在公网上传一个攻击页面,诱导受害者去访问,真正能够在受害者不知情的情况下完成CSRF攻击。
防御方法:
1.验证请求头中HTTP Referer字段
2.在验证地址中添加token并验证
3.在HTTP头部中自定义属性并验证
4.验证码