2018 年 12 月 9 日 发布
本次版本更新主要涉及一个安全更新,由于框架对控制器名没有进行足够的检测会导致在没有开启强制路由的情况下可能的
getshell
漏洞,受影响的版本包括5.0
和5.1
版本,推荐尽快更新到最新版本。
更新框架修复
如果你使用composer
安装,并且一直保持最新版本使用的话,使用下面的指令更新到最新版本即可
composer update topthink/framework
如果你使用了git
版本库安装,也请及时更新你所用的仓库版本。
如果各种原因暂时无法更新到最新版本(早期版本升级到最新版本可能存在兼容性问题,请首先参考官方手册的升级指导章节),可以参考下面的方式进行手动修正。
手动修复
5.0
版本
在thinkApp
类的module
方法的获取控制器的代码后面加上
if (!preg_match('/^[A-Za-z](w|.)*$/', $controller)) {
throw new HttpException(404, 'controller not exists:' . $controller);
}
5.1
版本
在think
outedispatchUrl
类的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模式查询 - 统一助手函数与 hink esponseDownload函数文件过期时间
- 完善关联模型的
save
方法 增加make
方法仅创建对象不保存 - 修改条件表达式对静态变量的支持
- 修正控制器名获取
- 改进view方法的
field
解析
V5.0.23
主要更新日志
- Query支持调用模型的查询范围
- 聚合查询字段支持
DISTINCT
- 改进闭包验证的参数
- 多对多关联支持指定中间表数据名称
- after/before验证支持指定字段验证
- 改进多对多关联
- 改进验证类
- 增加
afterWith
和beforeWith
验证规则 用于比较日期字段 - 完善规则提示
- 改进断线重连
- 修正软删除的
destroy
方法 - 修复模型的
save
方法当data
变量为空 数据不验证 - 模型增加
replace
方法 - MorphOne 增加 make 方法创建关联对象实例
- 改进
count
方法返回值类型 - 改进聚合查询方法的正则判断
- 改进
sqlsrv
驱动 - 完善关联的
save
方法 - 修正控制器名获取