fastadmin cms插件网站public下的index.php文件经常被篡改,会被上传一些恶意的文件,怎么办?

  • 内容
  • 评论
  • 相关

cms改版的网站public下的index.php文件经常被篡改,怎么办?
而且public下经常会被上传一些恶意的文件?请问怎么解决?

ThinkPHP 有升级,你还没有更新吗? 2018-12-09 发布的。

如果你使用的FastAdmin版本在V1.0.0.20181210_beta之下,请务必更新ThinkPHP5版本。

ThinkPHP在2018年12月9日发布了一个重要安全更新版本,该版本更新主要涉及一个重要安全更新,由于ThinkPHP框架对控制器名没有进行足够的检测会导致在没有开启强制路由的情况下可能的getshell漏洞,受影响的版本包括5.0+和5.1+版本。

由于FastAdmin基于ThinkPHP5.0进行开发,因此我们也在第一时间发布了新版本(1.0.0.20181210_beta),同时以往的旧版本已经全部下架,目前只能下载全新的版本。

下面我们提供命令行升级和手动修复两种办法,请你根据你的需求选择你的修复方法,注意在修复前先做好备份!备份!备份!

命令行修复

如果你使用命令行安装FastAdmin或有安装Composer,你可以使用以下命令将ThinkPHP5更新到最新版本即可修复

composer update topthink/framework

如果你下载的是完整包且没有安装Composer,那么你需要进行手动更新。你可以参考下面的手动修复方法。

手动修复

打开thinkphp/library/think/App.php,找到module方法,
在获取控制器的代码后面加上

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

修复后的代码如下:

// 获取控制器名
$controller = strip_tags($result[1] ?: $config['default_controller']);

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

$controller = $convert ? strtolower($controller) : $controller;

安全提示

安全不仅仅代码安全,同时还涉及到服务器安全等多方面,建议你配置好服务器相关安全配置,做好目录权限控制,以下是我们的安全建议:

  • FastAdmin目录安全配置,请参考:https://forum.fastadmin.net/thread/5707
  • 禁用后台admin模块,启用独立的后台登录入口,请参考:https://forum.fastadmin.net/thread/7640
  • 新增网站配置时务必绑定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


产品经理都很寂寞!
扫一扫来撩!!!
  微信公众号码:kelebl
  QQ群:497315816