位置: 编程技术 - 正文

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面试题)

  • 小规模纳税人开专票税率是1%还是3%
  • 新企业所得税季初资产总额
  • 职工福利按工资发放吗
  • 公司清理固定资产汽车怎么开票
  • 股票股利的资金来源
  • 长期应收款在资产负债表中填在哪里
  • 所得税忘了计提如何做会计分录还有结转
  • 结转抵扣
  • 股东投入款放入什么科目
  • 国有企业改制资产评估增值税收规
  • 外资企业撤退
  • 企业职工遣散费标准
  • 铁路运输发票的开具要求
  • 通讯费可以个人承担吗
  • 未开票收入改为开票收入做账
  • 销售收入分成率计算公式
  • 会计账簿的定义及其作用
  • 待认证进项税额借方余额表示什么
  • 公司发票限额按什么计算
  • 公允价值变动损益属于损益类的
  • 其他业务收入和其他业务成本
  • 亏损企业所得税汇算清缴怎么做
  • 报税遇节假日延长吗?
  • 旅行社差额征税如何开票
  • 不动产进项税为什么不能抵扣
  • 固定资产转移是什么意思
  • 付款给对方怎么做分录
  • 质押的应收票据怎么做账
  • 收到投资分红怎么做账务处理?
  • 任务管理器无法完成操作拒绝访问
  • windows7电脑时间不对
  • nodejs怎么降低版本
  • yolov3与yolov2
  • php fopen()
  • 退税报关的流程是什么
  • phpinfophp漏洞利用
  • 买入返售金融资产和卖出回购金融资产
  • php图形图像处理技术
  • 大数据项目之数据采集
  • 小型微利企业减按25%计算应纳税所得额
  • js经典案例代码大全
  • 公司租车公司
  • 企业交的社保包含什么
  • 物权转移的几种情形
  • 一个月可以勾选多少进项税额
  • 2020织梦建站教程全集
  • 增值税专票怎么交税
  • 缴税零申报
  • 表单数据提交时会触发什么事件
  • 高速公路费如何查询
  • 小规模减免税款会计分录
  • 增值税期末留抵退税原因采集确认单
  • 小额贷款行业新规
  • 应交税金期末为负数
  • 工程中标费用放哪个科目
  • 企业给员工单独交社保
  • 本期已认证且不抵扣怎么申报
  • 应付账款借方余额在资产负债表中怎么列示
  • 成本增加比例怎么算的
  • aix解除镜像
  • win10安装完成后需要做哪些设置
  • win10无法双击
  • 苹果手机价格
  • linux的trace
  • 从此学会隐藏悲伤全文
  • Linux 修改文件名后缀
  • unity自动门
  • c# opengl 3d
  • 置顶通知要开启吗
  • vue打包页面空白
  • Struts2+jquery.form.js实现图片与文件上传的方法
  • 如何使用jquery
  • 产品税务编号查询系统官网
  • 电子发票密码在哪里看
  • 关于明确干部挂职工作期间有关待遇的
  • 金税盘注销后怎么开发票
  • 车价36万保险一般多少钱
  • 税务文书保存期限分几类
  • app平台怎么投诉商家
  • 自然资源税税率
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设