位置: 编程技术 - 正文

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

  • 银行委托贷款上征信吗
  • 金税维护费全额抵扣
  • 递延所得税负债是什么科目
  • 礼品的进项税能抵扣吗
  • 月末结存材料的实际成本例题
  • 已经认证不能抵扣怎么办
  • 深圳增值税发票选择确认平台使用
  • 应付账款少记违反什么认定
  • 公司买了股票怎么做账
  • 没有发票怎么报销入账
  • 服务行业有哪些工作
  • 饭店取得的烟酒是什么
  • 三证合一后换章子要多久
  • 本期准予扣除税额是什么
  • 当期净资产收益率怎么算
  • 个体工商户经营所得税怎么申报
  • 会员卡充值赠送金额怎么做账
  • 公司在银行购买金币没有发票
  • php获取用户名
  • 法人不缴纳社保员工可以缴纳吗怎么办
  • 资产减值损失结转
  • 增值税中的筹划方法哪些可以应用在消费税中,为什么?
  • 如何申请公积金装修房子
  • 工行对公贷款利息扣款时间是几点
  • html img位置
  • Vue3+ElementPlus el-date-picker设置可选时间范围
  • 企业所得税退税流程
  • 汇兑损失是否可以抵扣
  • anaconda更改虚拟环境路径
  • 购进运输服务取得的增值税专用发票准予抵扣进项税额吗
  • ml神经网络
  • 扩散模型和gan的区别
  • 筹建期间发生的收入
  • 餐饮业的原材料
  • 因质量问题对方直接扣款怎么处理
  • 固定资产分期付款会计处理?
  • 一张记账凭证写不下时合计怎么写
  • 公司自有房产出租给员工如何处理
  • 资产负债表和利润表的勾稽关系
  • sqlserver高并发性能差
  • 一般纳税人商贸企业的税负是多少
  • 金税四期上线后如何查虚开
  • 无形资产摊销年限按法律规定还是企业估计
  • 可明确区分的商品什么意思
  • 怎么判断其他债权债务
  • 会计凭证销毁年限
  • 保险公司代扣的车船使用税分录
  • 房屋租赁怎么干
  • 员工持股平台合伙企业
  • 所得税费用科目编码
  • 财政非税收入支付平台
  • 预提工资如何算增值税
  • 项目所在地个税网上怎么报
  • 财务负责人怎么实名认证
  • sqlserver 类型
  • mysql 绿色
  • 桌面快捷方式不显示图标怎么办
  • 修改注册表显示隐藏文件
  • windows定时关机计划
  • win 10系统怎么提高网速
  • linux 多块硬盘虚拟成一块
  • jquery获取本地ip
  • 安卓游戏引擎
  • linux shell语句
  • ping命令详解步骤
  • 作用
  • Nodejs实现多人同时在线移动鼠标的小游戏分享
  • shell按行读取文件存入数组
  • android图形架构
  • javascript常见的数据类型
  • js测试工具
  • adb shell命令
  • 稽查局和税务局哪个好发展
  • 1万4千块钱交多少个人所得税
  • 重庆个人所得税是多少
  • 开票盘注销后能否撤回
  • 残疾人有车能否坐公交车
  • 河南税筹公司
  • 依法行政的观念
  • 个体户国税地税怎么交
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设