位置: 编程技术 - 正文

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

  • 加班费计入个税吗
  • 税务师事务所是代理记账公司吗
  • 有形资产租赁服务的税率
  • 个体户也要做实收资本吗
  • 养猪场死猪处理方法
  • 免税进项税额转出会计分录
  • 企业出包工程预付的工程款
  • 小企业会计准则和企业会计准则的区别
  • 从租计征的房产税纳税期限
  • 长期借款业务的思维导图
  • 集资建房出租收入如何缴纳个税
  • 出租设备应计入什么科目
  • 法人转钱到公户是借款还是投资款
  • 公司借别的公司的钱再借给别的公司
  • 固定资产折旧属于制造费用吗
  • 招投标增值税
  • 免抵税额是否能抵销项税额呢?
  • 领购发票实名认证流程
  • 资产负债表季度申报期末余额怎么填
  • 期末未缴税额为正是什么意思
  • 旅游业开办费
  • 要求做前两年的核酸检测
  • 抵扣联和发票联算一张发票吗
  • 备件和耗材的定义
  • 公积金发放怎么自动转入银行卡
  • 有限责任公司出资方式有哪些
  • 所有者权益变动表图片
  • 促销礼物
  • 电脑重装系统怎么激活
  • 如何在 Windows 11 上更改锁屏壁纸
  • 坏账准备怎么做会计科目
  • 不能加载axf文件
  • 发票填开有哪些规范性要求
  • 增值税纳税人兼营免税减税项目的
  • php new
  • thinkphp教程
  • php正则替换函数怎么写
  • web前端面试基础知识
  • php公众号开发框架
  • 中国石化电子发票平台官网
  • 织梦设置会员访问
  • 深入解读何暮楚
  • 存货的成本包括哪几项
  • 在建工程转入固定资产怎么做
  • 存货盘亏毁损处理方法
  • mysql交互操作过程中使用的语言是什么
  • 免抵退不得抵扣税额什么意思
  • 以前年度损益调整借贷方向
  • 存在弃置费用的固定资产有哪些
  • 冲减以前年度营业外收入分录
  • 退款扣除手续费
  • 员工 成本
  • 工程施工科目核算内容
  • 法人能去税务局开个人发票吗
  • 预收账款的金额是什么
  • 暂估入库一直没有发票
  • 一年以内到期的长期借款属于
  • 税控系统全额抵扣
  • MySQL MEM_ROOT详解及实例代码
  • MySQL(win7x64 5.7.16版本)下载、安装、配置与使用的详细图文教程
  • win10一年更新一次
  • xp系统插u盘没反应怎么解决
  • linux dd测试
  • msoobe.exe是什么
  • 免费升win10时升级后一直有效吗
  • 苹果电脑支持的u盘格式
  • thinkpad 8高配版
  • dropbox怎么在国内使用
  • linux系统中命令什么大小写
  • 进程管理器命令
  • python安装numpy和matplotlib
  • jquery弹出页面
  • android adbd
  • javascript教程chm
  • android监听app启动
  • ajax与java使用实例
  • 为什么买的酒精有香味
  • 国家税务总局南京市秦淮区税务局纳税服务中心
  • 留抵税额退税政策2022年14号文件
  • 查询发票号码
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设