ThinkPHP在2019年1月11日再次发布了一个重要安全更新版本,该版本更新主要涉及一个重要安全更新,由于ThinkPHP框架对参数_method没有进行足够的检测会导致可能的getshell漏洞,受影响的版本包括5.0.0~5.0.23。
由于FastAdmin基于ThinkPHP5.0进行开发,因此我们也在第一时间发布了新版本(1.0.0.20190111_beta),同时以往的旧版本已经全部下架,目前只能下载全新的版本。
下面我们提供命令行升级和手动修复两种办法,请你根据你的需求选择你的修复方法,注意在修复前先做好备份!备份!备份!
命令行修复
如果你使用命令行安装FastAdmin或有安装Composer,你可以使用以下命令将ThinkPHP5更新到最新版本即可修复composer update topthink/framework
如果你下载的是完整包且没有安装Composer,那么你需要进行手动更新。你可以参考下面的手动修复方法。
手动修复
打开thinkphp/library/think/Request.php,找到以下代码$this->method = strtoupper($_POST[Config::get('var_method')]);
$this->{$this->method}($_POST);
将以上代码改为$method = strtoupper($_POST[Config::get('var_method')]);
if (in_array($method, ['GET', 'POST', 'DELETE', 'PUT', 'PATCH'])) {
$this->method = $method;
$this->{$this->method}($_POST);
} else {
$this->method = 'POST';
}
unset($_POST[Config::get('var_method')]);
温馨提示请务必先在本地进行测试,保证业务正常后再更新到生产环境。
安全提示
安全不仅仅代码安全,同时还涉及到服务器安全等多方面,建议你配置好服务器相关安全配置,做好目录权限控制,以下是我们的安全建议:新增网站配置时务必绑定public目录,同时启用open_basedir限制只允许FastAdmin的根目录,例如:fastcgi_param PHP_VALUE "open_basedir=/var/www/fastadmin/:/tmp/:/proc/";
修改php.ini,禁用不安全的函数,配置如disable_functions = passthru,exec,system,chroot,chgrp,chown,shell_exec,proc_open,proc_get_status,popen,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru