目录
a。我们能不能区分一个请求是来自于自己的前端页面,还是第三方的网站?
一.什么是CSRF漏洞🍔🍔🍔
Cross-Site Request Forgery跨站请求伪造
1.实现流程
2.原理
用户C打开浏览器,访问受信任网站A,输入用户名和密码请求登录网站A;
在用户信息通过验证后,网站A产生Cookie信息并返回给浏览器,此时用户登录网站A成功,可以正常发送请求到网站A;
用户未退出网站A之前,在同一浏览器中,打开一个TAB页访问网站B;
网站B接收到用户请求后,返回一些攻击性代码,并发出一个请求要求访问第三方站点A;
浏览器在接收到这些攻击性代码后,根据网站B的请求,在用户不知情的情况下携带Cookie信息,向网站A发出请求。网站A并不知道该请求其实是由B发起的,所以会根据用户C的Cookie信息以C的权限处理该请求,导致来自网站B的恶意代码被执行。
二CSRF案例分析
-
Gmali CSRF漏洞(设置邮件转发)
-
Weibo CSRF漏洞自动关注账户)
2.CSRF漏洞的危害
-
修改账户信息
-
利用管理员账户,上传木马文件
-
传播蠕虫病毒(点击,扩散,点击。。。。)
-
和其他攻击手段配合,实现攻击,比如XSS,SQL注入
3.CSRF和XSS区别
4.CSRF playload
1)通过图片的img src属性,自动加载,发起GET请求
2)构建一个超链接,用户点击以后,发起GET请求
3)构建一个隐藏表单,用户访问,自动提交,发起POST请求
三CSRF漏洞挖掘
1.检测工具
Burp Suite
CSRF Tester
https://github.com/s0md3v/Bolt
四CSRF漏洞防御
1.防御思路
a。我们能不能区分一个请求是来自于自己的前端页面,还是第三方的网站?
HTTP Requst Header
Referrer:引用页;引荐;来源页面
作用:跟踪来源,比如访问统计,广告效果
referer的不足
1.可以任意修改
2.可以为空
CSRF Token step
1.用户使用用户名密码登录,服务器下发一个随机的token字段给客户端,并且服务端把这个字段保存在session中、
2。客户端把这个token保存起来,放到隐藏字段
3.用户在登录状态下,在之后访问的时候,都要携带这个token字段
4.服务端从session中拿出token值进行对比,如果一致,说明请求合法
5.用户退出,session销魂,token失效
b。怎么让自己的前端页面和伪造的请求变得不一样呢?
(注:仅限于参考学习,不得用于非法活动)