ThinkPHP5.*版本发布安全更新,阿里云提示thinkphp5远程代码执行高危漏洞

2018 年 12 月 9 日 发布
本次版本更新主要涉及一个安全更新,由于框架对控制器名没有进行足够的检测会导致在没有开启强制路由的情况下可能的getshell漏洞,受影响的版本包括5.0和5.1版本,推荐尽快更新到最新版本。
如果各种原因暂时无法更新到最新版本(早期版本升级到最新版本可能存在兼容性问题,请首先参考官方手册的升级指导章节),可以参考下面的方式进行手动修正。

手动修正
5.0版本
在thinkApp类的module方法的获取控制器的代码后面加上

if (!preg_match('/^[A-Za-z](\w|\.)*$/', $controller)) {
    throw new HttpException(404, 'controller not exists:' . $controller);
}

5.1版本
在thinkroutedispatchUrl类的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模式查询
统一助手函数与thinkresponseDownload函数文件过期时间
完善关联模型的save方法 增加make方法仅创建对象不保存
修改条件表达式对静态变量的支持
修正控制器名获取
改进view方法的field解析
V5.0.23主要更新日志
Query支持调用模型的查询范围
聚合查询字段支持DISTINCT
改进闭包验证的参数
多对多关联支持指定中间表数据名称
after/before验证支持指定字段验证
改进多对多关联
改进验证类
增加afterWith和beforeWith验证规则 用于比较日期字段
完善规则提示
改进断线重连
修正软删除的destroy方法
修复模型的save方法当data变量为空 数据不验证
模型增加replace方法
MorphOne 增加 make 方法创建关联对象实例
改进count方法返回值类型
改进聚合查询方法的正则判断
改进sqlsrv驱动
完善关联的save方法
修正控制器名获取

标签: 无

发表评论:

whatsapp营销