位置: 编程技术 - 正文

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

编辑:rootadmin

推荐整理分享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面试题)

  • 印花税计提时应入什么科目
  • 金蝶软件中怎么增加固定资产
  • 调研费用怎么写
  • 发票开具就能做账了吗
  • 建筑施工企业增值税税率是多少
  • 以前年度损益调整账务处理分录
  • 补贴收入企业所得税
  • 汇算清缴中研发费用中其他费用可抵扣的比例是多少
  • 外贸公司有国企吗
  • 欠税后股东能否退股
  • 企业股权转让收入申报表填哪里
  • 经营租赁租赁费会计分录
  • 12万纳税
  • 金税三期的变化
  • 固定资产出售税务处理方法
  • 买金税盘怎么做账,抵扣的时候
  • 专用发票的有效期是几年
  • 城市生活垃圾处理与资源化利用工艺设计
  • 个人开发票给公司需要提交哪些资料
  • linux中!
  • 电脑中病毒了怎么重装系统
  • 车辆维修费可以抵扣进项吗
  • 公司名下汽车过户给个人
  • php utf8转gb2312
  • win10电脑记事本在哪
  • 什么时候使用多进程
  • 外商投资企业和外资企业的区别
  • oauth2 sso单点登录
  • video.js能播放什么格式
  • reactz
  • css动画效果代码
  • 预提费用多提汇算清缴怎么做账
  • 帝国cms怎么用
  • 销售佣金 会计分录
  • 员工借款未还离职怎么办
  • 帝国cms使用redis
  • 最好最实用的织毛线
  • 售后回购确认收入的时间
  • sql server 2008r2连接
  • 应交增值税进项税额和销项税额区别
  • 小规模城建税和教育费附加分录
  • 一般纳税人增值税减免政策2023
  • 购买办公用品属于什么凭证类型
  • 建安企业用什么会计制度
  • 去年的亏损今年第一季度可以弥补吗
  • 房地产企业固定资产贷款
  • 参加新冠疫情防控工作感悟 医务人员
  • 固定资产清理的累计折旧怎么算
  • 政府给的专款专用的补贴需要交税吗
  • 公司赠送客户礼品怎么做账
  • 实收资本主要包括哪些
  • 公司基本账户如何开户
  • 利息与资金占用费
  • 对公账户 发票
  • 重要性水平如何判断
  • sql server的实例
  • sqlserver 禁用触发器 超时
  • 深入Windows 第七版 第二部分
  • freebsd常用命令
  • linux生成文件
  • Linux如何开启防火墙
  • win8关机慢怎么办
  • windows mobile10
  • win7电脑磁盘突然不见了怎么办
  • windows8如何分盘
  • 小郭聊一聊
  • bat 批处理文件
  • 用python编写登录程序
  • dos判断变量是否为空
  • mybatis框架执行流程
  • LocalBroadcastManager原理和机制
  • unity 2danimation
  • mvp 框架
  • js模块化框架
  • jquery入口
  • android 5.1 WIFI图标上的感叹号及其解决办法
  • js new实现
  • pythonwhile循环语句用法
  • 纳税人接受教育
  • 车船税发票丢了怎么补办
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设