位置: 编程技术 - 正文

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

  • 收到个人开票会计分录怎么做
  • 金税盘抵扣增值税申报
  • 装卸费属于什么费用
  • 境外企业在中国境内承包建筑工程应在
  • 已在境外缴纳的企业所得税税额 分国不分项
  • 托收承付和委托收款的含义和相同之处
  • 农民工专户个税起征点2023四川省
  • 机票行程单上没有日期怎么回事
  • 为什么出现补交税
  • 客户退货的会计分录
  • 发放取暖补贴文件
  • 货发出款未收的会计分录怎么做?
  • 公司租房子出去物业费可以代付吗
  • 检测费属于什么税目
  • 以公司买房
  • 律师事务所计提准备金的标准
  • 房屋购买安装电梯可以抵扣吗?
  • 简易计税项目是所有发票都是普票吗
  • 过路过桥费抵扣2021新规定
  • 企业取得的信托计划分红缴企业所得税吗
  • 三证合一后换章子要多久
  • 投资者减除费用可以填0吗
  • 提高主营业务收入的意义
  • 应用程序无法正常启动(0xc0000142)
  • 华为手机屏幕有个圆点怎么取消
  • 物业公司收取水电周转金后果
  • 冲未开票收入怎么做分录
  • 公司购买购物卡发给职工的账务处理
  • php做
  • ipv6无网络访问权限怎么解决
  • 买电脑主要看什么?
  • 非货币性资产对外投资企业所得税例题
  • 雷尼尔国家公园攻略
  • 进项票留底怎么做分录
  • php加密方式有哪些
  • labview oop
  • 这几个sql语法的区别
  • fdisk命令的功能是什么?
  • 应交增值税的账务处理有哪两种
  • 待核销基建支出并入哪个科目
  • 印花税的征税范围及税率
  • 微擎最新破解版
  • mysql5.5命令
  • pythonjam怎么用
  • sqlserver模糊查询表名
  • 库存商品转成本意味着什么
  • 存货周转率作为控制变量
  • 成本类科目会结转到损益类科目吗?
  • 营利性养老机构有补贴吗
  • 增值税普通发票查询真伪
  • 销售商品发生的应收账款入账价值包括
  • 减少实收资本会影响资产吗
  • 自查时发现以前的事情
  • 企业补提以前年度折旧政策依据怎么写
  • 党委经费是国家政府出吗?
  • 增值税发票折扣发票
  • sql server创建备份
  • 电脑爆音卡死
  • centos添加子接口
  • win10预览版选哪个
  • 电脑打开win
  • mac 查看当前用户
  • macos 备份
  • 为什么我无法更改某些设置电脑
  • linux安装步骤
  • js日期选择框
  • cocos3d物理引擎
  • linux进程管理命令使用
  • 手把手教你学python
  • linux归档文件什么意思
  • 批量ghost
  • Unity3D游戏开发(第2版)
  • css和js应如何在html中放置
  • 安卓两页合并到下一页
  • 车位办房产证需交多少税
  • 河南省国家税务局通用定额发票
  • 中国体育体制改革的特点
  • 光伏发电地方税收
  • 电子税务局网上登录
  • 专票清单用什么纸打印
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设