位置: 编程技术 - 正文

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

  • 计入税金及附加的科目
  • 盈余公积发放现金股利分录怎么写
  • 打印的电子发票需要盖章么
  • 金蝶旗舰版的现金流量表怎么导出
  • 发票税号不对还能报销吗
  • 减免税款抵税怎么做分录
  • 对公账户卡号是私人账号
  • 印花税计入哪个费用
  • 税法关于发票丢失的
  • 工会经费和职工教育经费比例
  • 公允价值变动损益借贷方向
  • 对供应商的罚款怎么入账
  • 当期发生的费用
  • 月末计算各种税费表格模版
  • 哪些计入应收账款
  • 怎么用手撕胶带图解
  • 补偿贸易具体方式
  • 限售股转让所得
  • 股权收益需要缴增值税吗
  • 购买预付卡账务处理
  • 苗木公司经营理念
  • 华为手机如何用有线耳机
  • 劳务派遣发票备注栏要求
  • 投资回报周期是多少天
  • 税务自查补缴税款的申报表在哪里找
  • 农业企业出租厂房需要交税吗
  • win11安装失败0xc1900201
  • w7系统怎么用
  • uniapp获取input的值
  • win7开机拨号取消
  • 过路费进项税抵扣填在纳税申报的哪行
  • php fgets函数的用法
  • 商标个性设计
  • 机动车发票金额含税吗
  • 费用的结转是在借方还是贷方
  • 快速制作一个演示文稿可用什么
  • Zend Framework+smarty用法实例详解
  • 加速折旧的企业
  • yii框架入门
  • 饭店的手撕发票可以报销吗
  • git代码提交规范
  • javascript基础书
  • 员工预支款计入什么科目
  • 税号一般多少位数字
  • 固定资产以什么资金形态存在
  • 《中华人民共和国治安管理处罚法》
  • 福利费超过多少交税
  • 个人名字的发票可以报销吗
  • 金税盘地区编号怎么查
  • 外购的商品用于生产经营
  • 出口货物关税完税价格包括哪些
  • 残保金属于职工社保吗
  • 专用发票不抵扣联可以当普票用吗?
  • 逾期交房违约金 已支付金额
  • 没有收到款项签认债有用吗
  • 收到其他企业投资是属于其他业务收入吗
  • 企业日常发放的贷款
  • 非流动性资产有
  • 场地租赁费属于什么税收分类编码
  • 待转销项税额对应科目
  • 明细账摘要写错了怎么修改
  • ubuntul
  • 深入3DSTUDIOMAX
  • mysql清空数据表怎么恢复
  • sqlserver 错误6005
  • 微软的定时炸弹就是Windows XP
  • linux 操作系统
  • hpdskflt.sys
  • xp无法加载配置文件
  • linux命令怎么用
  • iptables 增加
  • unity shaderlab
  • jquery与ajax获取特殊字符实例详解
  • jquery增加一行和删除
  • 年轻干部是什么意思
  • 县级税务
  • 税务登记注销证明是什么样的
  • 云南省地方税务局公告2017年第2号
  • 保险机构如何代收车船税
  • 企业分立需要开发票吗?
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设