热门课程

免费试听

上课方式

开班时间

当前位置: 首页 -   文章 -   新闻动态 -   正文

什么是 CSRF 攻击?如何避免?

知了堂姐
2024-07-09 11:12:24
0
在Java面试题中,有这样一个问题常被问到,什么是 CSRF 攻击?如何避免?
什么是CSRF攻击?
CSRF(Cross-siterequestforgery)也被称为one-clickattack或者sessionriding,中文全称是叫跨
站请求伪造。一般来说,攻击者通过伪造用户的浏览器的请求,向访问一个用户自己曾经认证访问过的网站发送出去,使目标网站接收并误以为是用户的真实操作而去执行命令。常用于盗取账号、转账、发送虚假消息等。攻击者利用网站对请求的验证漏洞而实现这样的攻击行为,网站能够确认请求来源于用户的浏览器,却不能验证请求是否源于用户的真实意愿下的操作行为
那么如何避免呢?
1、验证HTTPReferer字段
type:'POST',url:'/url/path',data:formdata,/***必须false才会自动加上正确的Content-Type*/contentType:false,/***必须false才会避开jQuery对formdata的默认处理*XMLHttpRequest会对formdata进行正确的处理*/processData:false}).then(function(){},function(){});returnfalse;});HTTP头中的Referer字段记录了该HTTP请求的来源地址。在通常情况下,访问一个安全受限页面的请求来自于同一个网站,而如果黑客要对其实施CSRF攻击,他一般只能在他自己的网站构造请求。因此,可以通过验证Referer值来防御CSRF攻击
什么是 CSRF 攻击
2、使用验证码
关键操作页面加上验证码,后台收到请求后通过判断验证码可以防御CSRF。但这种方法对用户不太友
3、在请求地址中添加token并验证
CSRF攻击之所以能够成功,是因为黑客可以完全伪造用户的请求,该请求中所有的用户验证信息都是存在于cookie中,因此黑客可以在不知道这些验证信息的情况下直接利用用户自己的cookie来通过安全验证。要抵御CSRF,关键在于在请求中放入黑客所不能伪造的信息,并且该信息不存在于cookie之中。可以在HTTP请求中以参数的形式加入一个随机产生的token,并在服务器端建立一个拦截器来验证这个token,如果请求中没有token或者token内容不正确,则认为可能是CSRF攻击而拒绝该请求。这种方法要比检查Referer要安全一些,token可以在用户登陆后产生并放于session之中,然后在每次请求时把token从session中拿出,与请求中的token进行比对,但这种方法的难点在于如何把token以参数的形式加入请求。对于GET请求,token将附在请求地址之后,这样URL就变成http://url?csrftoken=tokenvalue。而对于POST请求来说,要在form的最后加上,这样就把token以参数的形式加入请求了
4、在HTTP头中自定义属性并验证这种方法也是使用token并进行验证,和上一种方法不同的是,这里并不是把token以参数的形式置于HTTP请求之中,而是把它放到HTTP头中自定义的属性里。通过XMLHttpRequest这个类,可以一次性给所有该类请求加上csrftoken这个HTTP头属性,并把token值放入其中。这样解决了上种方法在请求中加入token的不便,同时,通过XMLHttpRequest请求的地址不会被记录到浏览器的地址栏,也不用担心token会透过Referer泄露到其他网站中去。
什么是 CSRF 攻击?如何避免?主要有以上这几点,关注知了堂成都Java培训,带你了解Java更多相关知识和相关问题。
 
大家都在看

网络安全工程师需要学什么?网络安全工程师课程内容

2024-07-09 浏览次数:0

前端学习要学什么?前端要掌握哪些技术?

2024-07-09 浏览次数:0

很好,你赶项目的样子成功引起了我的注意

2024-07-09 浏览次数:0

你认真写代码的样子,真迷人

2024-07-09 浏览次数:0

知了堂&西华大学网安实训火热进行中

2024-07-09 浏览次数:0

零基础学习Java要怎么学?0基础小白学Java...

2024-07-09 浏览次数:0
最新资讯
什么是 CSRF 攻击,如何避...   网络攻击在现在的互联网时代是屡见不鲜,今天我们来看看什么是CSRF攻击,如何避免?防止csrf攻...
什么是Java工程师?Java...   什么是Java工程师?  Java应用可谓无所不在,从桌面办公应用到网络数据库等应用,从PC到嵌...
什么是网络安全?网络安全专业可...   随着计算机技术的飞速发展,信息网络已经成为社会发展的重要保证。有很多是敏感信息,甚至是国家机密。...
什么是静态测试?静态测试工具有...   做过软件测试的人都应该对测试方式烂熟于心,如白盒测试,黑盒测试,性能测试,动态测试,静态测试等等...
什么是静态测试?静态测试工具有...   做过软件测试的人都应该对测试方式烂熟于心,如白盒测试,黑盒测试,性能测试,动态测试,静态测试等等...
什么是java架构师?Java... Java架构师是什么?Java架构师是整个开发项目的灵魂人物,负责了整个技术关口的把控,也是广大程序...
什么是服务器脚本语言?哪些是常... 服务器脚本是对服务器行为的编程,称为服务器脚本。你知道什么是服务器脚本语言吗?最常用的服务器脚本语言...
什么是渗透测试:某网站的渗透测... 在网络安全领域,渗透测试扮演着至关重要的角色。它是对计算机系统、网络或应用程序进行的一种安全评估方法...