解决TP5项目被恶意篡改、注入代码问题
首先,谈谈这个曲折的经历!
第一次,被人用eval()函数注入了文件,发现后,我就禁了这些PHP高危险函数!
第二次,就是被人在入口文件中注入了代码,在public文件夹中,多出了很多文件。然后我就修改了宝塔面板的密码,加上下面的第2步,目前暂时没有被注入了,希望能帮到大家!
如果还有更好的办法,希望不吝赐教,留下你宝贵的经验,万分感谢!
1、禁掉高危险函数:eval、phpinfo 这2个函数必须禁掉!
(1)、需禁用的函数名,如下:
phpinfo、eval、passthru、exec、system、chroot、scandir、chgrp、chown、shell_exec、proc_open、proc_get_status、ini_alter、ini_restore、dl、pfsockopen、openlog、syslog、readlink、symlink、popepassthru、stream_socket_server、fsocket、fsockopen、putenv、create_function
(2)、下面两个可以根据项目中是否用到来决定是否禁用,如下:
error_log、ini_set
(3)、建议可禁用的函数,如下:
pcntl_alarm, pcntl_fork, pcntl_waitpid, pcntl_wait, pcntl_wi
2、找到 项目根目录/thinkphp/library/think/App.php文件,在373行添加如下代码,用正则去匹配
if (!preg_match('/^[A-Za-z][\w\.]*$/', $controller)) {
throw new HttpException(404, 'controller not exists:' . $controller);
}
附上截图:
3、最好是public文件夹的文件都给上权限,不然人家想改就改!
4、服务器中的网站配置,默认文件,如非必要,只保留index.php
此致,应该不会出问题了,我现在还在探索有没有更好的解决办法!