yii2 csrf

今天看了一下yii2.0 和之前1.x的版本比较改变了很多地方,具有防止 SQL 注入, XSS 攻击, CSRF 攻击, cookie 窃取等,今天特意研究了一下YII2.0防csrf攻击。首先看一下csrf攻击的原理,如下图:

  http://www.o-xx.com/wordpress/?p=16    

http://www.cnblogs.com/hyddd/archive/2009/04/09/1432744.html

2009040916453171


上图是csrf攻击的简单原理,根据这个原理可以知道攻击者B不能拿到web A埋在user C中的cookie,那么就简单了,在user C访问web A时,web A在user C 的浏览器中埋下一个cookie,同时在post提交信息的地方放一段token,user C post 提交表单时,同时将token值提交到web A的服务器,web A将token值和user A的cookie做关联性的验证,验证真实性,这样就能知道是否是由user A 来提交的表单了。

那么在yii2.0中是怎么做的呢?

首先我们看一下yii2.0渲染的html页面和form表单,

QQ截图20141023093350

QQ图片20141023093431

 

QQ图片20141023093501

上面第二张图可以看到,yii2.0在渲染html页面时,会生成一端meta信息来保存csrf_tonken,在渲染form表单是,会在表单内生成一段hidden 的input 用来保存csrf_tonken。

那么如果我想用ajax 来post数据,或者flash post数据可以吗?答案是NO,会报400错误。QQ截图20141023094442

 

那么如ajax和flash如何来进行post数据呢,有两个方法,第一个方法就是在config\web.php中关闭csrf验证,如下图,设置’enableCsrfValidation’ => false,这样就关闭立刻csrf验证。

QQ截图20141023093918

 

第二个方法就是获取页面中的meta name为csrf-token 的content,在该值作为参数 _csrf的值和其他数据一起post到服务器,如下图:

QQ截图20141023094943

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值