位置: 编程技术 - 正文

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
  • 公司给员工发工资用途怎么写
  • 华为分享连接电脑显示检查您的拼写
  • 发票金额大于实付金额,要怎么入账
  • 抵押房产可以买卖吗
  • windows问题报告桌面一直闪
  • 个体户经营所得核定税率
  • php处理ajax
  • mac的快捷键在哪
  • 购入材料会计分录怎么写
  • kzip_main.exe是什么
  • uniapp安装插件
  • 选择简易计税方法计税的有
  • php执行linux脚本
  • 克雷格格林
  • 普尔曼多少钱
  • 投资性房地产转为存货
  • nodemon卸载
  • 结转销售成本的分录怎么写
  • for of 与for in
  • echarts快速上手
  • rf-kill
  • dom事件种类
  • 帝国cms使用手册
  • 织梦怎么采集文章
  • 禁止DedeCMS未审核文档支持动态浏览方法
  • spring整合mongodb
  • Linux下实现MySQL数据备份和恢复的命令使用全攻略
  • mongodb4.4安装
  • 开发支出在资产负债表填哪一栏
  • 资产减值损失属于
  • mysql创建数据库的操作步骤
  • mysql数据控制语句
  • 企业的存货清查包括
  • 专项应付款的核算
  • 幼儿园收取的生活费免税吗
  • 红冲以前年度费用
  • 关于预付账款的说法正确的有
  • 预付款什么时候开发票
  • 外购材料的核算方法有
  • 长期股权投资的交易费用计入哪里
  • 材料运费计入什么科目
  • 采购人员垫付怎么入账
  • 成本暂估入帐如何做分录
  • window10预览版
  • ubuntu18.04lts
  • linux中安装软件可使用哪些方式
  • centos关闭开机启动项
  • centos搭建lamp环境
  • win7主要有哪些内容
  • 微软撤回快捷键
  • 批处理命令实例
  • html初学
  • ie支持es6
  • jquery图片轮播无缝连接
  • 用javascript写简单网页
  • android设置背景颜色代码
  • python神奇的小海龟
  • python守护线程与非守护线程
  • python中的get方法
  • 进口设备免关税政策融资费
  • 税务局有事业单位编制吗
  • 烟台税务app
  • 中介服务行业
  • 出口之后必须办什么手续
  • 地方文化包括哪几种
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设