位置: 编程技术 - 正文

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

  • 破产企业发放工资要不要纳税?
  • 广告宣传费扣除比例
  • 简易计税是否要申报个税
  • 京东开专用发票需要用公户付款吗
  • 制作费开票属于什么科目
  • 电梯维保费属于建筑服务吗
  • 其他应付款短期借款
  • 税务注销后还能稽查吗
  • 房产评估费会计分录
  • 工程结算与工程施工如何结转
  • 代扣代缴的增值税算进项税吗
  • 开出支票支付属于什么会计科目
  • 营改增后商品房销售合同印花税的计税依据是什么?
  • 退税详细教程
  • 车船税发票丢了咋办
  • 购买国债逆回购有股东限制
  • 董事费监事费高管薪酬标准
  • 收购公司收购款转给谁
  • 中标费用由哪方出
  • 兼职劳务费个税怎么算
  • 如何看云空间的内容
  • 关于商品退换
  • 打开浏览器时间长
  • 入账成本包括增值税税额吗
  • php7.0
  • 发票盖章有讲究吗
  • 收到汇票结余会怎么样
  • 黑暗的树荫
  • yolo训练参数
  • 大语言模型集成工具
  • 红包生成算法
  • get命令获取文件夹
  • 固定资产的特点不包括
  • 工会经费残保金怎么申报
  • 可供分配利润的会计分录
  • 房地产企业买地
  • 银行业的利润率
  • 红字发票开错可以重开吗
  • 全国信息技术服务业
  • 固定资产折旧计算表模板
  • sqlserver数据库定时任务
  • 增值税进项发票是什么意思
  • 汽车维修公司做账基本流程
  • 汇算清缴时资产折旧怎么填
  • 公交公司财政补贴
  • 分期收款销售什么意思
  • 软件测试取费标准
  • 买相机送肩带吗
  • 微信怎么帮别人代缴社保
  • 以前年度的银行手续费发票
  • pg 正则表达式
  • mysql5.7.31
  • windows 8
  • xp电脑怎么样
  • linux压缩.z
  • xp怎么改密码怎么设置
  • win10version20h2的03累积更新
  • linux igb
  • linux进程的环境变量
  • win10的三个安全问题
  • Android的AsyncTask官方API谷歌翻译版
  • Cocos2dx CrazyTetris 双线伪裁剪算面积 对于判断消除的思考(二)
  • opengl绘制一个矩形
  • opengl 透视投影
  • javascript中怎么创建一个数组
  • python读取grib
  • node.js可以跨平台吗
  • windows安装python pip
  • javascript module
  • MATLAB图像处理实例详解
  • python切片菜鸟教程
  • python 多线程处理
  • js怎么判断日期大小
  • jQuery+Ajax实现限制查询间隔的方法
  • 广西电子税务局怎么报税
  • 保险的佣金一般是多少
  • 发票怎样读入金税开票系统
  • 个人所得税自行纳税申报表(A表)
  • 湖北职称网上申请流程
  • 所得税汇算清缴退税税务局要来查账
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设