位置: 编程技术 - 正文

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

  • 国家税务总局操作指引
  • 个体工商户税务申报
  • 现金流量表现金流量项目明细分类
  • 财务管理税后利息率计算公式
  • 年初建账考虑要点有哪些
  • 应付账款现金流量表指定
  • 运输费增值税专用发票几个点
  • 本年利润借方专栏有什么
  • 附加税费计税依据
  • 水泥沙子开票属于什么类别
  • 固定资产原价的结余额
  • 接受捐赠的固定资产进项税额可以抵扣吗
  • 暂估入库产品行程影响所得税汇算清缴吗
  • 月底结转都结转什么
  • 企业购买小轿车进项税额可以抵扣吗
  • 季报所得税可以预交吗
  • 商品进销差价进哪个科目
  • 职工食堂对外经营合法吗
  • 房地产企业人防工程计入什么科目
  • 文档自动填写怎么弄
  • 研发费中废料收入怎么处理
  • window10如何设置休眠时间
  • 未售车位出租有哪些税要缴纳
  • 结转损益类收入科目的余额会计分录
  • thinkphp invoke
  • 企业停产免征房产税
  • 公司有个税怎么交
  • php选择结构
  • echarts图大小设置
  • vue :data="data"
  • 收入的利息怎么记账
  • 人力资源公司财务工作心得与感悟
  • 发票打印机如何安装在电脑上
  • 基本户不注销会扣钱吗
  • 研发失败的费用允许加计扣除吗
  • mysql中的外键的作用
  • 运费发票有普票吗
  • 未分配利润与净利润有关系吗
  • 增值税报完了能改么
  • 物流公司扣押货物算犯法吗
  • 计提的生产车间职工工资
  • 未分配利润与利润表的勾稽关系
  • 出口企业有哪些税收
  • 上市公司股票增发条件
  • 购入房屋建筑物进项税额抵扣
  • 增值税专用发票和普通发票的区别
  • 定额发票可以用于事业单位报销
  • 注册资本可以随便填吗
  • 把excel表格里的文字复制到word
  • ccs 运行
  • 增强型图形文件
  • WIN10系统中WPS字体颜色浅
  • linux安装solr
  • xp开始界面
  • linux ./执行
  • 萝卜家园光盘
  • 格式化快速格式化好吗
  • dae是什么文件
  • win7创建密码后为什么还是没有密码
  • win10开始菜单在哪
  • xp系统怎么隐藏文件
  • Linux怎么在家目录创建目录
  • w10简易版
  • cocos2dx怎么用
  • jquery邮箱正则表达式
  • SlidingMenu属性详解【Android】
  • shell脚本for循环 计算1到100的和
  • 下载一个网页的所有图片
  • 批处理清空文本内容
  • python容错
  • linux链接ln
  • Unity3D: StartCoroutine 和 yield return 深入研究
  • 交互式shell是什么意思
  • javascriptcom
  • 不想让浏览器运行
  • python类属性和类方法
  • 房子总额70万首付多少
  • 企业吸收合并资质
  • 乌鲁木齐税收政策
  • 混凝土税率是多少2021
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设