ThinkPHP5.*版本发布安全更新
2018 年 12 月 9 日 发布
本次版本更新主要涉及一个安全更新,由于框架对控制器名没有进行足够的检测会导致在没有开启强制路由的情况下可能的
getshell
漏洞,受影响的版本包括5.0
和5.1
版本,推荐尽快更新到最新版本。
更新框架修复
如果你使用composer
安装,并且一直保持最新版本使用的话,使用下面的指令更新到最新版本即可
composer update topthink/framework
如果你使用了git
版本库安装,也请及时更新你所用的仓库版本。
如果各种原因暂时无法更新到最新版本(早期版本升级到最新版本可能存在兼容性问题,请首先参考官方手册的升级指导章节),可以参考下面的方式进行手动修正。
手动修复
5.0
版本
在think\App
类的module
方法的获取控制器的代码后面加上
if (!preg_match('/^[A-Za-z](\w|\.)*$/', $controller)) {
throw new HttpException(404, 'controller not exists:' . $controller);
}
5.1
版本
在think\route\dispatch\Url
类的parseUrl
方法,解析控制器后加上
if ($controller && !preg_match('/^[A-Za-z](\w|\.)*$/', $controller)) {
throw new HttpException(404, 'controller not exists:' . $controller);
}
V5.1.31
主要更新日志
- 改进
field
方法 - 改进
count
方法返回类型 download
函数增加在浏览器中显示文件功能- 修正多对多模型的中间表数据写入
- 改进
sqlsrv
驱动支持多个Schemas模式查询 - 统一助手函数与\think\response\Download函数文件过期时间
- 完善关联模型的
save
方法 增加make
方法仅创建对象不保存 - 修改条件表达式对静态变量的支持
- 修正控制器名获取
- 改进view方法的
field
解析
V5.0.23
主要更新日志
- Query支持调用模型的查询范围
- 聚合查询字段支持
DISTINCT
- 改进闭包验证的参数
- 多对多关联支持指定中间表数据名称
- after/before验证支持指定字段验证
- 改进多对多关联
- 改进验证类
- 增加
afterWith
和beforeWith
验证规则 用于比较日期字段 - 完善规则提示
- 改进断线重连
- 修正软删除的
destroy
方法 - 修复模型的
save
方法当data
变量为空 数据不验证 - 模型增加
replace
方法 - MorphOne 增加 make 方法创建关联对象实例
- 改进
count
方法返回值类型 - 改进聚合查询方法的正则判断
- 改进
sqlsrv
驱动 - 完善关联的
save
方法 - 修正控制器名获取
ThinkPHP5.*版本发布安全更新的更多相关文章
- EQueue 2.3.2版本发布(支持高可用)
前言 前段时间针对EQueue的完善终于告一段落了,实在值得庆祝,自己的付出和坚持总算有了成果.这次新版本主要为EQueue实现了集群功能,基本实现了Broker的高可用.另外还增加了很多实用的功能, ...
- glibc 各版本发布时间以及内核默认glibc版本
最近有些软件要求glibc 2.14+,centos 6.x自带的版本是2.12的,特查了下glibc 各版本发布时间以及与对应的内核,如下: Complete glibc release histo ...
- 比Ansible更吊的自动化运维工具,自动化统一安装部署自动化部署udeploy 1.0 版本发布
新增功能: 逻辑与业务分离,完美实现逻辑与业务分离,业务实现统一shell脚本开发,由框架统一调用. 并发多线程部署,不管多少台服务器,多少个服务,同时发起线程进行更新.部署.启动. 提高list规则 ...
- 评论alpha版本发布
讲解顺序: 1. 新蜂:俄罗斯方块 俄罗斯方块已经完成了核心的游戏部分,可以流畅的进行游戏,经验值功能也已经完成,目前进度很好:不足之处主要有:后续的显示内容还没完成,所以界面空出来很多板块,alp ...
- Percona Server 5.6.13-61.0 首个 GA 版本发布
Percona Server 5.6 的首个 GA 版本发布了,版本号是 5.6.13-61.0 ,该版本基于 MySQL 5.6.13 改进内容包括: New Features: Percona S ...
- RDIFramework.NET ━ .NET快速信息化系统开发框架 V2.8 版本发布
(新年巨献) RDIFramework.NET ━ .NET快速信息化系统开发框架 V2.8 版本发布 历时数月,RDIFramework.NET V2.8版本发布了,感谢大家的支持. RDIFram ...
- RDIFramework.NET ━ .NET快速信息化系统开发框架 V2.7 版本发布
历时数月,RDIFramework.NET V2.7 版本发布了,感谢大家的支持. RDIFramework.NET,基于.NET的快速信息化系统开发.整合框架,为企业或个人在.NET环境下快速开发系 ...
- Spring.Net.FrameworkV3.0 版本发布了,感谢大家的支持
Spring.Net.FrameworkV3.0 版本发布了,感谢大家的支持. Spring.Net.Framework,基于.NET的快速信息化系统开发.整合框架,为企业或个人在.NET环境下快速开 ...
- Winform版本发布更新
版本发布: 一.局域网共享文件方式 发布界面: 更新界面: 二.FTP方式 发布界面 更新界面: (只会更新有变动的文件) 同步新增,替换与删除 实现方式XML(文件名+文件最后修 ...
随机推荐
- tensorflow中数据批次划分示例教程
1.简介 将数据划分成若干批次的数据,使用的函数主要有: tf.train.slice_input_producer(tensor_list,shuffle=True,seed=None,capaci ...
- AngularJS +Kendo UI Grid template
var dataSource = new kendo.data.DataSource({ transport: { dataType: "json", read: inputUri ...
- cout关闭输出缓冲,调试用
cout.setf(std::ios::unitbuf);
- mybatis源码解析之环境准备
概述 对于mybatis而言,大家一定都不陌生,我相信很多同学都跟我一样,用起来非常的熟练,但是其内部的实现原理呢,不太清楚,经常面试的时候,面试官问及这方面的知识,都只能尴尬的回答不知道,或者不清楚 ...
- Java 获取class method parameter name
package org.rx.util; import org.objectweb.asm.*; import java.io.IOException; import java.io.InputStr ...
- UVALive5966(bfs)
题意:给你一张n*m的图,其中: “ . ”代表可以走的空地 “ # ”代表不能走的墙 “ * ”代表传送门,当你从一个非传送们走到一个传送门的时候,你只能选择传送到除这个传送们外其他的传送门,如过没 ...
- Java的基本数据类型大小及其包装类
Java的基本数据类型 变量就是申请内存来存储值.也就是说,当创建变量的时候,需要在内存中申请空间. 内存管理系统根据变量的类型为变量分配存储空间,分配的空间只能用来储存该类型数据. 因此,通过定义 ...
- aps.net国际化本地资源 .resources”正确嵌入或链接到程序集
asp.net国际化提供了资源文件的解决的方式, asp.net自带的两个项目文件夹 分别是:App_GlobalResources和App_LocalResources, App_GlobalRes ...
- Windows10 VS2017 C++ Json解析(使用jsoncpp库)
1.项目必须是win32 2.生成的lib_json.lib放到工程目录下 3.incldue的头文件放到工程目录,然后设置工程->属性->配置属性->vc++目录->包含目录 ...
- 【PL/SQL基础知识】结构
1.pl/sql块的结构 declare --声明的变量.类型.游标 begin --程序的执行部分(类似于java的main()方法) exception --针对begin块中出现的异常 ---w ...