跨站请求伪造的几个解决方法
跨站请求伪造的几个解决方法
跨站请求伪造的几个解决方法一、跨站请求伪造(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模式(新标签打开网页)的浏览器尤为重要。
热门推荐
- dedecms改数据(dedecms修改文章自动增加的起始ID从指定数字增加文章ID的方法)
- php构成方法的关键字是(PHP中的self关键字详解)
- mysql怎么给查询权限(MySql设置指定用户数据库查看查询权限)
- apache和yii域名配置(Yii 框架控制器创建使用及控制器响应操作示例)
- laravel数据库关联查找(laravel 操作数据库常用函数的返回值方法)
- python实现sql脚本规范(基于Python的SQL Server数据库实现对象同步轻量级)
- mysql按端口查找配置(MySQL中给定父行找到所有子行的解决方案)
- docker如何进入容器(详解如何进入、退出docker容器的方法)
- sqlserver 锁表原因(SQL Server学习笔记之事务、锁定、阻塞、死锁用法详解)
- windowsserver2012设置ftp账户(Windows Server 2012安装ftp服务器图文教程)