CSRF漏洞

CSRF漏洞

什么是CSRF漏洞?

跨站请求伪造(英语:Cross-site request forgery),也被称为 one-click attack 或者 session riding,通常缩写为 CSRF 或者 XSRF, 是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。跟跨网站脚本(XSS)相比,XSS 利用的是用户对指定网站的信任,CSRF 利用的是网站对用户网页浏览器的信任。

CSRF攻击原理:

  1. 用户C打开浏览器,访问受信任网站A,输入用户名和密码请求登录网站A;

  2. 在用户信息通过验证后,网站A产生Cookie信息并返回给浏览器,此时用户登录网站A成功,可以正常发送请求到网站A;

  3. 用户未退出网站A之前,在同一浏览器中,打开一个TAB页访问网站B;

  4. 网站B接收到用户请求后,返回一些攻击性代码,并发出一个请求要求访问第三方站点A;

  5. 浏览器在接收到这些攻击性代码后,根据网站B的请求,在用户不知情的情况下携带Cookie信息,向网站A发出请求。网站A并不知道该请求其实是由B发起的,所以会根据用户C的Cookie信息以C的权限处理该请求,导致来自网站B的恶意代码被执行。

CSRF漏洞的危害:

  1. 修改账户信息
  2. 利用管理员账号,上传木马文件
  3. 传播蠕虫病毒(点击、扩散、点击……)
  4. 和其他攻击手段配合,实现攻击,比如XSS、SQL注入

CSRF与XSS区别:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Q6FsGriw-1677135277746)(C:\Users\gjh\AppData\Roaming\Typora\typora-user-images\image-20221230141853009.png)]

CSRF漏洞防御:

  1. 验证HTTP Referer 字段;检查REFERER(referer里面是否包含了主机名(IP或域名)

    不足:可以任意修改、可以为空

  2. 在请求地址中添加token并验证;

    • 用户使用用户名密码登录,服务端下发一个随机的token字段给客户端,并且服务端把这个字段保存在session中。
    • 客户端把这个token保存起来,放到隐藏字段。
    • 用户在登陆状态下,在之后访问的时候,都要携带这个token字段。
    • 服务端从session中拿出token值进行对比,如果一致,说明请求合法。
    • 用户退出,session销毁,token失效。
  3. HTTP头中自定义属性并验证

  4. 二次验证(验证码验证)

  5. HTTP头中自定义属性并验证

  6. 二次验证(验证码验证)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值