位置: 编程技术 - 正文

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

  • 销售企业进货会计分录
  • 不抵扣勾选怎么撤销
  • 哪些进项税额不能加计抵减
  • 企业所得税季度申报表A类
  • 固定资产抵债要交税吗怎么交
  • 用友t3固定资产计提折旧后没有凭证
  • 金融业的增值税
  • 一般纳税人有什么优惠政策
  • 广告费发票的税率
  • 汉字防伪企业是哪家
  • 资产原值包含残值吗
  • 进出口总额比上年同期
  • 购买商品用于赠送
  • 电商公司购买拍照违法吗
  • 城市维护建设税税率
  • 3联收据
  • 存货减值账务处理 华图
  • windows聚焦无法显示 为灰色
  • 企业如何选择会计师事务所
  • dgservice.exe是什么
  • php字符串定义
  • 财政总预算会计科目
  • php 魔术
  • PHP:pcntl_wifexited()的用法_PCNTL函数
  • 企业缴纳职工社保是否可以缴纳三险
  • 发票交付在哪里
  • php自动载入自定义函数文件
  • django pypi
  • 到2023年
  • 计算机视觉未来发展方向
  • crontab命令用法
  • 可转债公允价值变动计入
  • 研发支出是资产类会计科目吗
  • 公务交通通讯补贴
  • 公司注销税款太多
  • 不动产投资应该怎么做账
  • mongodb $nin
  • 长期借款期末余额表示什么
  • 股票的价格是由什么决定
  • 或有资产的确认条件基本确定
  • sql如何进行事务操作
  • 中小企业所得税优惠
  • 销售免税农产品的会计分录
  • 冲减上月收入会计分录
  • 公司注销资本公积
  • 处置全资子公司合并报表
  • 企业研发支出的核算内容
  • 2021年异地转账还收费吗
  • 公益募捐的基金是什么
  • 工程竣工后发生工程的保修费用入哪个科目?
  • 公司不注销有什么影响吗
  • sql server in()
  • sqlserver数据库事物日志已满
  • win9什么时候发布的
  • 32位与64位操作系统怎么区分从32位和64位的概念上进行讲述
  • win8怎么进系统
  • centos下netconfig 的安装方法
  • 怎样设置win10
  • centos zsh
  • win8计算机管理员权限
  • yarn使用教程
  • xcode配置opencv
  • bootstrap tooltip
  • Node.js中的construct构造函数
  • jquery.validate提示错误信息位置方法
  • android进程间通信机制有哪些
  • python入门小程序编写
  • unity坐标系转换
  • 堆实现栈
  • 河南省地税网上营业厅
  • 陕西省国家税务总局班子成员
  • 国土局和地税局的区别
  • 退发票操作流程
  • 公允价值变动损益属于什么科目
  • 资源税的税目有7个,其中不包括
  • 税务询问笔录属于什么证据
  • 事业单位大额资金拨付需要什么报账材料
  • 买车险代收车船税合法吗
  • 信息报送条例
  • 地税局公务员工作内容
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设