ThinkPHP 5.1.26 发布,修正版本,包含安全更新

栏目: PHP · 发布时间: 7年前

内容简介:该版本主要修正了上一个版本的一些问题,并改进了全局查询范围的支持,同时包含了一个安全更新,支持上一个版本的无缝升级。本次发布的版本,包含了一个数据库聚合查询的安全更新。如果你在使用聚合查询的时候,聚合查询的字段名由用户输入决定,可能会引发SQL注入,你应该尽快更新到新版本以解决安全隐患(感谢补天平台反馈,漏洞编号

ThinkPHP5.1.26版本发布 —— 修正版本,包含安全更新

该版本主要修正了上一个版本的一些问题,并改进了全局查询范围的支持,同时包含了一个安全更新,支持上一个版本的无缝升级。

主要更新

  • 修正单一模块下注解路由无效的问题

  • 改进数据库的聚合查询的字段处理

  • 模型类增加 globalScope 属性定义 用于指定全局的查询范围

  • 模型的 useGlobalScope 方法支持传入数组 用于指定当前查询需要使用的全局查询范围

  • 改进数据集的 order 方法对数字类型的支持

  • 修正上一个版本 order 方法解析的一处BUG

  • 排序字段不合法或者错误的时候抛出异常

  • 改进 Request 类的 file 方法对上传文件的错误判断

安全更新

本次发布的版本,包含了一个数据库聚合查询的安全更新。

如果你在使用聚合查询的时候,聚合查询的字段名由用户输入决定,可能会引发 SQL 注入,你应该尽快更新到新版本以解决安全隐患(感谢补天平台反馈,漏洞编号 QTVA-2018-875147 )。

新特性介绍

排序字段不合法抛出异常

之前如果有非法的 排序 字段会直接忽略,新版会抛出一个异常。

User::order('rand()')->select();

会抛出异常

排序表达式错误:rand()

正确的写法应该是

User::orderRaw('rand()')->select();

数据集的 order 方法改进

数据集的 order 方法现在可以更好的支持数字类型的数据排序, order 方法的第三个参数可以指定是否为数字类型(默认为数字类型进行排序)。

// 查询用户列表
$users = User::where('status', 1)->select();
// 对用户列表按照score字段降序排列
$list  = $users->order('score', 'desc');

如果是需要对字符串类型的字段排序,可以使用

// 查询用户列表
$users = User::where('status', 1)->select();
// 对用户列表按照name字段升序排列
$list  = $users->order('name', 'asc', false);

全局查询范围改进

全局查询范围之前必须通过 base 方法来定义,现在可以使用在 globalScope 属性中定义查询范围的名称,

<?php
namespace app\index\model;

use think\Model;

class User extends Model
{
    // 定义全局的查询范围
    protected $globalScope = ['status'];

    protected function scopeStatus($query)
    {
        $query->where('status',1);
    }
}

或者使用 useGlobalScope 方法传入数组的方式动态指定当前查询的全局查询范围。

User::useGlobalScope(['status'])->select();

useGlobalScope 方法的数据会覆盖 globalScope 属性定义,但如果传入空的数组,则仍然会获取 globalScope 属性定义的全局查询范围。

Request 类的 file 方法改进

如果你要获取的上传文件有任何的上传错误情况,系统会抛出一个异常,而不是返回一个 Null

try {
    $image = $request->file('image');
} catch (\Exception $e){
    // 上传发生错误
    echo $e->getMessage();
}

如果你获取全部的上传文件信息的话,即使包含上传错误的数据,也不会抛出异常,错误的上传数据会被忽略。

// 如果image上传存在错误,则不会包含在files信息里面
// 如果不希望如此结果,可以首先进行上传验证或者单独获取某个上传文件
$files = $request->file();

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Using Google App Engine

Using Google App Engine

Charles Severance / O'Reilly Media / 2009-5-23 / USD 29.99

With this book, you can build exciting, scalable web applications quickly and confidently, using Google App Engine - even if you have little or no experience in programming or web development. App Eng......一起来看看 《Using Google App Engine》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具