跨站请求伪造的几个解决方法
跨站请求伪造的几个解决方法
跨站请求伪造的几个解决方法一、跨站请求伪造(CSRF)能干嘛?
CSRF攻击者可以盗用你的身份,以你的名义发送恶意请求。CSRF能够做的事情包括:以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品,虚拟货币转账......造成的问题包括:个人隐私泄露以及财产安全。
二、跨站请求伪造(CSRF)攻击特性
1、依靠用户标识危害网站
2、利用网站对用户标识的信任
3、欺骗用户的浏览器发送HTTP请求给目标站点
4、另外可以通过IMG标签会触发一个GET请求,可以利用它来实现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的恶意代码被执行。
四、跨站请求伪造的几个解决方法
1、token参数验证
每个请求都带上一个由服务器生成的随机参数(例如:token验证),然后在服务器端和对该参数,如果和下发的随机数不同,则可以认为有人在伪造请求。
2、验证HTTP Referer字段
根据HTTP协议,在HTTP头中有一个字段叫Referer,它记录了该HTTP请求的来源地址。在通常情况下,访问一个安全受限页面的请求必须来自于同一个网站。
3、在HTTP头中自定义属性并验证
自定义属性的方法也是使用token并进行验证,和token参数方法不同的是,这里并不是把token以参数的形式置于HTTP请求之中,而是把它放到HTTP头中自定义的属性里。通过XMLHttpRequest这个类,可以一次性给所有该类请求加上csrftoken这个HTTP头属性,并把token值放入其中。这样解决了前一种方法在请求中加入token的不便,同时,通过这个类请求的地址不会被记录到浏览器的地址栏,也不用担心token会通过Referer泄露到其他网站。
4、及时清除认证cookie
CSRF攻击是有条件的,当用户访问恶意链接时,认证的cookie仍然有效,所以当用户关闭页面时要及时清除认证cookie,对支持TAB模式(新标签打开网页)的浏览器尤为重要。
热门推荐
- vue动态生成的下拉框如何获取值(Vue 级联下拉框的设计与实现)
- C#如何获取真实IP地址
- 织梦调用栏目内容(织梦标签channel实现列表页调用当前栏目的子类)
- HttpServerUtility类的常用方法
- linux负载均衡(深入理解Linux负载均衡LVS)
- 使用Visual Studio对项目进行远程调试
- vuejs指令解析(Vue.js中的计算属性、监视属性与生命周期详解)
- vue商城购物车数据(vue实现购物车全部功能的简单方法)
- mysql在centos7中如何安装(阿里云centos7安装mysql8.0.22的详细教程)
- axios并发请求数据(项目中如何使用axios过滤多次重复请求详解)