位置: 编程技术 - 正文

yii2局部关闭(开启)csrf的验证的实例代码

发布时间:2024-01-10

推荐整理分享yii2局部关闭(开启)csrf的验证的实例代码,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

上一节主要是简单地说了一下关于yii2的防御csrf的攻击机制,接下来说一下关于如何全局和局部的开启使用csrf。

(1)全局使用,我们直接在配置文件中设置enableCookieValidation为true

如果不需要使用csrf的话,设置'enableCookieValidation' => false,但是这是不安全的,因此yii2的yiiwebrequest中的enableCookieValidation默认设置为true的,也就是默认开启csrf的,所以我们也可以不配置这个值,默认开启。

如果开启csrf,因为这是全局的,所以在任何的post请求都会要求认证,所以我们在post数据的时候,就必须设置csrf的数据隐藏在表单中。

post数据的时候必须要把这个值post过去,这个值的产生<&#;= Yii::$app->request->csrfToken &#;>,返回一个加密后的csrfToken。

所以无论是post表单还是ajax的post过去,都必须设置csrfToken这个值,并且要提交时要post过去。如果没有的话,就会发生错误,无法认证通过。

(2)如果想在某些控制器不想使用csrf验证的话,又该如何做呢?

方法很简单,直接设置

因为这个Controller继承与yiiwebController ,将相当于继承于enableCsrfValidation这个属性,那么在创建控制器实例时,就会在这个控制器关闭csrf功能,访问这个控制器的post的方式时,也就不会进行验证。

举一个例子,比如我们开发API的时候,微信那边的接口需要post数据给我们的接口时,由于微信端不知道csrfToken,所以访问post数据的时候,如果开启全局csrf的话,那肯定不能访问成功的。所以这时就需要关闭这个API 的csrf。

yii2局部关闭(开启)csrf的验证的实例代码

3)如果要具体关闭至某一个action呢?

有时在一些功能中,我们需要在某一个action中关闭csrf验证。我们知道对于csrf的验证是在beforeAction($Action)中实现的,下面我们可以在Controller中重写beforeAction($action)这个方法

传入的参数$action是controller针对这个访问实例化的对象,里面包含很多信息,大家可以打印看看。

首先执行$action->id获取当前的访问的action名称。而$novalidactions是一个数组,里面是action名称,这些action都是是你需要关闭csrf的认证的操作(需要关闭csrf认证的操作)。

通过当前的访问的action是否在这个$novalidactions中,如果在,说明这个action需要关闭csrf功能,所以就将这个控制器实例的设置为

接下来再执行parent::beforeAction($action),此时传入来的$action里的controller实例的enableCsrfValidation已变为false。

最后一定要返回true,否则的话,不会往下执行action操作的。

(4)如果局部开启呢?

首先在配置文件要设置

全局不使用csrf。

(a)要在控制器中开启,只需要设置

则整个控制器都会开启

(b)要在action中开启

$accessactions是需要开启csrf的action的名称,将设置$action->controller->enableCsrfValidation = true,当前操作可以开启csrf。

标签: yii2局部关闭(开启)csrf的验证的实例代码

本文链接地址:https://www.jiuchutong.com/biancheng/290993.html 转载请保留说明!

上一篇:php使用flock阻塞写入文件和非阻塞写入文件的实例讲解(php flock函数)

下一篇:PHP实现阿里大鱼短信验证的实例代码(阿里php面试题)

  • 企业出售资产要交增值税吗
  • 一般纳税人企业所得税多久申报一次
  • 增值税征税范围及税率
  • 税盘维护费抵扣
  • 城建税 小规模
  • 计提的费用年底要冲回吗
  • 国有企业无偿划转资产需要交税吗?
  • 股权的溢价是什么意思
  • 停车场收入怎么做账
  • 事业单位去年的年假今年可以休吗
  • 报关单出口退税联在哪打印
  • 预缴增值税怎么填表
  • 增值税的税负率的计算公式
  • 申请增值税一般纳税人登记在办理手续
  • 没有发生关联交易需要关联申报吗?
  • 营业成本包括费用类吗
  • 外购已抵扣进项税额
  • 对方开具红字发票过来怎么做进项税转出
  • 小规模纳税人跨月冲红退税
  • 预计负债什么时候确认
  • 利润分配补亏
  • 研发支出是否可以抵税
  • 电脑开机后一直滴滴
  • 苹果mac电脑自带的软件
  • 报销冲销借款
  • 增值税电子发票有什么用
  • php登录注册
  • linux传输数据
  • 免征的增值税需要纳税调整吗
  • 圣克鲁斯群岛海战百度百科
  • 罚款是否需要开发票
  • 爬虫10054
  • 准备动作怎么做
  • 旅客运输进项抵扣税率
  • YOLOv5网络结构组成
  • 【机器学习】KNN算法及K值的选取
  • vue设置元素不可点击
  • 文心一言中国经济大讲堂
  • fdisk命令的功能是什么?
  • php PATH_SEPARATOR判断当前服务器系统类型实例
  • 微擎框架可以干什么
  • 收到合同预付款怎么处理
  • 股东出资不足需要赔偿吗
  • 房租增值税怎么计算
  • 电子票开票人复核人一样有影响吗
  • 一般纳税人怎么转为小规模纳税人
  • 收到餐饮费专用发票会计分录
  • 织梦发布文章栏目怎么不显示
  • 试用产品的账务处理分录
  • 小企业会计准则调整以前年度费用分录
  • 向个体工商户付款可以转给个体法人吗
  • 营业收入的构成分析主要包括
  • 企业注销后账目需要保留多少年
  • 库存商品过期报废的会计分录是什么
  • 企业所得税虚报成本多少属于犯罪
  • 4s店出售试驾车的增值税是多少
  • 诉讼费用负担原则是什么
  • 会计分录什么时候用负数表示
  • 如何结转生产成本至库存商品
  • sql server2012操作步骤
  • centos7.4
  • 怎么删除文件的隐藏属性
  • demon.exe是什么
  • 苹果mac系统怎么截屏快捷键
  • uup windows
  • win8怎么添加wifi
  • win10系统玩英雄联盟可以吗
  • nodejs常用api
  • 随机游戏插件怎么使用
  • python的设置
  • node怎么实现多线程
  • BootStrap iCheck插件全选与获取value值的解决方法
  • 安卓智能设备指什么
  • a类棉b类棉c类的区别
  • 企业房产税公式
  • 芜湖买房退契税在哪里退
  • 为什么购进固定资产不得抵扣
  • 企业所得税的改革与完善
  • 工商税务登记流程视频
  • 鲨鱼记账咋记账
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号