位置: 编程技术 - 正文

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

  • 小规模纳税人怎么变成一般纳税人
  • 退票凭证什么样子
  • 税控盘及维护费的会计分录
  • 审核通过的红字发票怎么作废
  • 服务收入属于什么会计要素
  • 个体户不足征是否要交房产税
  • 企业季度预缴所得税怎么账务处理
  • 合同能源管理项目账务处理
  • 怎么登记明细账
  • 多付银行承兑退回的会计分录怎么写?
  • 虚开发票走账对方不返还如何处理?
  • 公司用现金发放工资在税法上合规吗
  • 净利润含不含所得税
  • 买商品送购物券合法吗
  • 主营业务税金及附加怎么算
  • 存根联和记账联丢失有影响吗
  • 宽带合同要交印花税吗
  • 个人取得上市公司股权
  • 中国每年森林火灾造成的损失
  • 出口退税进口免税
  • 办劳务发票需要什么资料
  • Win10系统cpu性能如何调高 Win10把cpu性能调到极佳的方法
  • 购买国外技术需要缴纳什么税
  • 应收账款重分类什么意思
  • 收到服务费发票怎么做账
  • 销售人员奖励办法
  • win10打印机驱动在电脑哪里找
  • 文件夹删除需要管理员权限怎么弄
  • exe都打不开
  • phpstudy的ftp
  • 提坏账准备的调整分录
  • uniapp打包成h5如何调用原生
  • laravel入门与实战
  • 外国政府贷款利息是否征收增值税
  • 开办费对应的现金流量项目
  • yolo 官网
  • 为什么要划分等价类
  • php实现验证码
  • php 字符串处理函数
  • yaf框架优缺点
  • php连接不上数据库sql
  • 小规模企业逾期是微信扫码付款吗
  • 增值税普通发票可以抵扣吗
  • 企业如何利用期货对冲风险怎么操作
  • 企业所得税能否票据入账
  • 其他权益工具投资是金融资产吗
  • 小规模纳税人免增值税的账务处理
  • mybatis入门菜鸟教程
  • 加计扣除进项税额是什么意思
  • 个人独资企业应税生产经营所得可以扣除税金支付
  • 继续教育的相关知识
  • 房地产按揭贷款政策
  • 应交增值税为负数是什么意思
  • 非正常损失的进项税额可以转出吗
  • 备用金怎么回冲
  • 营业外收入如何开票
  • 2017年6月,小张买了一台笔记本电脑,其主要硬件参数
  • 上一年度主营业务成本多计提了
  • 奖金是职工福利?
  • 银行账跨年一直没做怎么补
  • 股东的投资款可以直接私人银行卡转账吗
  • 建筑业企业承包资质类别包括
  • 工业企业外购材料采购成本包括
  • FreeBSD 6.2-RELEASE下载
  • SUSE Linux Enterprise Server 11 SP3安装教程详解
  • win71
  • Win7系统启动盘
  • windows 10的应用商店中的应用
  • 查看电脑是否可以装两个固态
  • linux安装bz2
  • win10更新总失败
  • 批处理文件修改注册表键值
  • &&在js中
  • 传智播客javappt
  • 在bash shell环境下
  • javascript中的函数包括内置函数和自定义函数
  • android 多页面
  • 电子税务局如何查询财务报表
  • 税务全国联网了吗
  • 1国家税务总局
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设