位置: 编程技术 - 正文

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安全中心通知关闭
  • php字符串函数大全
  • php splqueue
  • linux录制视频工具
  • 营改增后企业要交哪些税
  • 动态定位
  • 家属补助每月发多少钱
  • 本年利润怎么结转到未分配利润分录
  • php resizeimage 部分jpg文件 生成缩略图失败的原因分析及解决办法
  • ctu指令
  • 计算机视觉竞赛很重要吗
  • 简易计税是否可以享受即征即退
  • 弥补亏损的会计分录是怎样的
  • 补计提工资什么意思
  • 城建税减免性质代码是什么意思
  • 支付债券发行费怎么算
  • 关于出售使用过的产品
  • 借方和贷方是什么意思 现金日记账
  • 房屋维修基金交给哪个部门
  • 广告收入计入哪个科目
  • 内账收入如何确认
  • 其他业务收入的二级科目
  • 存货周转次数越高好还是越低好
  • 结转借贷方向如何计算
  • 篮球俱乐部归什么部门管理
  • 对方公司收钱不开发票怎么办
  • 企业公司制改建的有关规定
  • sql语句去除重复值
  • mysql8.0免安装
  • win10如何连接远程电脑
  • macbookairfacetime
  • Win10预览版拆弹
  • win7系统安装的配置要求有什么
  • win8 怎么样
  • z-blog SyntaxHighlighter 长代码无法换行解决办法(基于jquery)
  • perl cgi
  • js实现隔行变色
  • JavaScript实现Base64编码转换
  • unity ui图层
  • jQuery中ajax错误调试分析
  • 安卓handler使用
  • python向oracle写入
  • 编写一个c#
  • ugui scrollview
  • unity learning
  • maxlength属性设置为0
  • python自动翻译小工具
  • 企业如何在网上申请缴税三方协议
  • 上海税务登记如何网上申请
  • 国考什么时候开始备考比较好
  • 小规模无票收入怎么报税
  • 临沂二套房契税收费标准2023年
  • 入职培训结束寄语
  • 税务非正常认定条件
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设