记一次遇到ThinkPHP安全漏洞及升级修复最新版本方法

平时我们使用较多的还是WordPress、DEDECMS、Magento、Typecho等常规现成的CMS程序,只需要寻找和开发模板就可以上线网站项目,利用PHP框架开发的比较少。其中,我们应该知道在国内PHP框架中ThinkPHP是比较多的,而且有些CMS程序也是基于ThinkPHP开发的。

今天无意中打开有一个小网站是用ThinkPHP框架开发的(不清楚当初为什么选择用框架),都没有用到数据库,就几个PHP页面,完全是可以用BS前端+PHP页面就可以实现。看到打开比较慢,就下意识的查看源代码,看到头部被加入加密字符。

因为比对本地的备份是没有这些代码的,而且从代码中可以看到如果这个网站在搜索引擎中被打开会被跳转到他指定的网站。检查其他页面没有被破坏,好像就是加到首页中的,而且可以看到根目录有多了几个PHP特殊名称的文件。

因为这个小网站没有数据库,也没有特别的功能,所以我采用的办法直接格式化服务器重新安装WEB系统,对于THINKPHP升级最新版本的目前是5.0.24版本。这里从官方看到几个升级最新版本的方法。

第一、我采用的办法

我直接删除thinkphp文件,然后用最新版本的这个目录替换,问到熟悉这个框架的朋友说这个是核心部分,主要问题是在这里。然后删除runtime文件夹里的内容,这个缓存部分,然后网站运行后会自动重新缓存。

第二、官方升级办法

官方建议的升级办法有两个,一个是直接在服务器上composer升级,还有一个就是手动对应文件升级。前者我个人不建议使用,如果结构和功能复杂的话,可能会影响系统功能,当然我们也可以试试,前提是熟悉且一定要备份。

第三、网友提供的在线升级

升级脚本:https://github.com/0377/thinkphp-update

这个工具是在官方论坛找到的,应该是一个网友提供的,将updateTP.php放到public目录,然后执行这个文件会自动升级指定版本。在升级之前需要到文件中配置需要升级的版本。

总之,不管我们用什么办法升级,一定要先做好备份。