您现在的位置是:热点 >>正文

csrf漏洞防护方法

热点3人已围观

简介一个真实的教训:某知名电商平台曾因CSRF漏洞,让攻击者仅凭一个构造好的图片链接,就替用户完成了下单、改收货地址、甚至清空购物车的操作。用户只是浏览了恶意网页,什么都没点,钱就没了。 CSRF的核心问 ...

一个真实的漏洞教训:某知名电商平台曾因CSRF漏洞,让攻击者仅凭一个构造好的防护方法图片链接,就替用户完成了下单、漏洞改收货地址、防护方法甚至清空购物车的漏洞操作。用户只是防护方法浏览了恶意网页,什么都没点,漏洞钱就没了。防护方法

CSRF的漏洞核心问题在于:浏览器会自动携带Cookie,服务器无法区分这个请求是防护方法用户主动发出的,还是漏洞被恶意网站“借刀杀人”。防住它,防护方法思路就一条——让服务器有能力验证请求的漏洞“真实意图”。

最常用的防护方法方法是同步令牌(Synchronizer Token)。服务器在渲染表单时,漏洞生成一个随机且不可预测的token,塞进隐藏字段里。用户提交时,后端校验这个token是否与session中存储的一致。攻击者构造的跨站请求,拿不到这个token,自然就过不了校验。这招简单粗暴,但有个坑:如果站点存在XSS漏洞,token会被偷走,防线直接崩塌。所以,CSRF防护的前提是XSS得管好。

另一种思路是检查请求头中的Origin或Referer字段。Origin是浏览器主动带上的,跨站请求的Origin会是攻击者的域名,而合法请求的Origin则是本站。Referer同样能提供来源信息,但某些隐私插件或浏览器设置可能不发送Referer,导致误伤。更麻烦的是,Referer有时会被路径信息污染,比如URL里带参数时,Referer会包含完整路径,校验时别只比对域名前缀,要精确匹配来源。

还有一种轻量级方案——自定义请求头。比如要求所有敏感操作必须通过XHR/fetch发起,并附带一个自定义头(如X-Requested-With: XMLHttpRequest)。因为跨站表单提交无法设置自定义头(除非触发CORS预检,而预检会被服务器拒绝),所以能有效拦截。但要注意,如果站点本身用了JSONP或允许跨域资源共享,这个方案就失效了。

再聊聊双提交Cookie。这种方法不依赖服务端session,把token同时放在Cookie和请求参数里,服务器比对两者是否一致。好处是无状态,适合分布式系统;坏处是如果子域被攻破,攻击者可以覆盖Cookie,从而伪造token。我见过不少团队图省事用这招,结果子域忘记加固,出了事。

防护还得分级。登录、改密、支付这类高权限操作,必须用token+二次校验(比如输入密码或验证码)。普通浏览操作,可以不设防,但别把“查看订单”这种泄露隐私的接口也裸露着。另外,设置Cookie时加上SameSite属性是个好习惯——Lax模式能阻止跨站发送Cookie,但GET请求的顶级导航仍会带上,所以对POST接口,SameSite=Strict更安全。不过,SameSite对老浏览器(IE)无效,别指望它独挑大梁。

最后说个容易被忽略的点:CSRF攻击不限于浏览器表单。移动端App里,如果WebView的Cookie存储和原生请求混用,同样可能被恶意网页利用。我见过一个案例,App内嵌了WebView,用户登录后Cookie存在共享存储里,一个恶意H5页面直接调用了原生API,悄悄发起了转账请求。所以,App内所有跨域请求,都得走统一的防护逻辑,别以为原生环境就安全。

说到底,CSRF防护没有银弹。Token是基石,Origin检查做辅助,SameSite兜底,再配合对敏感操作的多重验证。别嫌麻烦——每多一道校验,就多一道让攻击者头疼的坎。你不需要把所有方法都用上,但至少要选一条主路走通,并确保它覆盖所有敏感接口。测试时,用Burp Suite或Postman模拟跨站请求,看看是否真的被拦住了。别等到上线后被白帽子找上门,那才叫尴尬。

Tags:

上一篇:xss专用屏幕

下一篇:html书籍推荐

相关文章

  • 技术要求怎么写

    热点

    技术要求的写法,说白了就一句话:让一个完全不了解项目背景的工程师,拿着这份文档就能把东西做出来,不用回头问你第二遍。 我见过太多反面教材。上个月评审一份接口文档,写“系统应具备高可用性”。开发组三个人 ...

    【热点】

    阅读更多
  • 恐怖视频不打码真实

    热点

    凌晨两点十七分,我盯着屏幕里那段七秒的监控录像。画面右下角的时间戳跳动着,一个穿白裙的女人从电梯左侧走进来,头没抬,步子很稳。她停在楼层按钮前,伸手按了顶楼——可那根手指,是从手肘的位置伸出来的。视频 ...

    【热点】

    阅读更多
  • 网站怎么防劫持

    热点

    上个月,我的一个做电商的朋友半夜打电话来,声音都是抖的。他的网站首页被劫持成了一个赌博广告页,用户一打开网址,先看到的是“澳门首家线上赌场”,要等五秒钟才跳转到他的商品页面。这五秒钟,足够让信任崩塌。 ...

    【热点】

    阅读更多


友情链接