位置: 编程技术 - 正文

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

  • 增值税计入成本吗?
  • 商品流通企业税种有哪些
  • 汇算清缴需要传什么资料
  • 企业运输没有发票
  • 固定资产直接计入成本的规定
  • 印花税按合同的多少收
  • 企业所得税税前扣除凭证管理办法
  • 一般纳税人的登记管理表述不正确的是
  • 客观原因导致的没见过世面
  • 私营公司会计资取公司资金
  • 破产清算收到的实收资本是破产资产吗
  • 结转劳务费
  • 预收账款转为主营业务收入
  • 电商公司怎么开发票
  • 文化传媒公司的经营模式怎么写
  • 餐费适用税率
  • 财会〔2017〕22号:《企业会计准则第14号收入》的通知
  • 一个季度为纳税期限的规定适用
  • 发票红冲需要用发票打印吗
  • 商品和服务税收编码怎么查
  • 费用未入账是什么意思
  • 金税盘红字信息表金额大于原蓝票
  • 权利,许可证照印花税
  • 怎么在电脑上设置输入法
  • 生活服务业内容
  • PHP:oci_free_statement()的用法_Oracle函数
  • 新西兰萨摩亚人
  • 分期收款销售账务处理及税务处理
  • 出租的厂房房产税如何征收
  • 暂估纳税调增了账务怎么处理
  • 运输公司汽车折旧年限
  • vue页面嵌套iframe vue页面
  • div+css导航栏
  • php 循环
  • 以旧换新方式销售金银首饰的消费税处理
  • 企业在外地单位怎么交税
  • 发票抵扣联和发票联区别
  • 其他业务收入不交增值税吗
  • 织梦标签工具
  • 织梦设置会员访问
  • 小微企业短小频急
  • 新成立的公司企业所得税
  • 小规模纳税人会自动转为一般纳税人
  • 解决问题
  • 合伙企业可以退出吗
  • 贷方是收入还是借方是收入
  • 无法收回的款项
  • 收到的现金货款转到公户备注往来款可以吗
  • 计提本月短期借款利息500元会计分录
  • 支付个人运费没有发票怎么办
  • 没有报关单可以出口吗
  • 非税收入专用票据包括什么
  • mysql5.7分区表
  • 丢失的身份证补办后,原本的身份证还有用吗
  • win7搜索无法使用
  • auepuf.exe是什么进程
  • windows xp输入法不见了怎么办
  • 如何解决心脏供血不足
  • centos7添加ip地址
  • centos时间不同步的解决方法(centos时间同步)
  • linux中ctrl+c
  • 水下摄影技巧
  • javascript数组的应用
  • Android中的touch事件
  • 冰球撞人犯规吗
  • CSS锦囊
  • perl脚本use strict
  • js实现登录界面
  • vscode 远程调试jni
  • linux中w命令详解
  • Linux bash Shell中的变量类型详解
  • 安卓手机管家怎么关闭
  • python写监控脚本
  • 如何查找迪士尼电话号码
  • 车辆购置税查询平台打印
  • 浙江省税务局发短信是真的吗
  • 两不一欠自查报告怎么写
  • 辽宁国家税务总局电子税务局
  • 涠洲岛船票售完
  • 中级财务管理好难
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设