昨天晚上一个做地方门户的老粉找我,说网站刚上线3天,被扫出20多个漏洞警告。我远程看了一眼,差点笑出声——前端页面连帝国CMS的数据库报错、PHP路径都全露出来了,这不等于给黑客递家门钥匙吗?
他才刚毕业做站长,完全没意识到这事儿有多严重。你想想,要是暴露了你的数据库版本、路径甚至配置文件片段,黑客分分钟就能找到入侵点。今天这篇文章,就是手把手教你把帝国CMS的所有前端错误提示全藏起来,连小白都能直接操作。
1. 先关帝国CMS后台自带的“前端调试开关”
这是最基础也是最容易忘的一步,很多人为了改模板方便开着,上线后忘了关。
1.1 找到后台的配置入口
你登录帝国CMS后台,别去翻模板改代码,直接找最上面的“系统设置”,点进去之后选“系统参数设置”。
1.2 快速定位到调试相关选项
别点左边一堆乱七八糟的菜单,直接拉到页面最底部的“用户设置”区里。哦不对,应该是拉到中间偏下,有个“关闭调试信息”的复选框?不对不对,再仔细看,帝国CMS7.5及以上版本是“开启全站调试模式”,把那个框取消勾选就行。
避坑提醒:要是你是帝国CMS7.2及以下的老版本,可能叫“开启前台调试信息”,也是一样的取消勾选。别手滑勾了“开启后台调试”,后台自己改东西用得上,别关。
2. 修改PHP配置文件,彻底断了前端报错的根
后台关了调试模式只是表面,万一后台配置没生效,或者PHP本身有语法小问题,前端还是会蹦提示。必须改PHP的配置,从服务器层面掐断。
2.1 找到你的PHP配置文件php.ini
这一步要看你的服务器是什么环境:
- 要是你用的是宝塔面板,直接点左侧“软件商店”,找到你用的PHP版本(比如PHP7.4),点右边的“设置”,再选“配置文件”,就能直接编辑了。
- 要是你用的是虚拟主机,联系你的主机商要php.ini的编辑权限,或者有些主机后台有个“PHP设置”的入口,里面能改。
- 要是你自己的云服务器没装面板,一般php.ini在/etc/php/[版本号]/apache2/或者/etc/php/[版本号]/fpm/下面,用vim或者nano编辑器改。
2.2 找到3个关键参数并修改
打开php.ini之后,用Ctrl+F(虚拟主机或者面板编辑器有搜索框)搜这三个词,挨个改:
- 搜`display_errors`,把后面的On改成Off,注意前面有没有分号注释掉,有分号就删掉。
- 搜`display_startup_errors`,同样把On改成Off,有分号也删掉。
- 搜`error_reporting`,把后面的数值改成E_ALL & ~E_NOTICE & ~E_DEPRECATED,或者直接改成0。改成0最彻底,连后台日志都不会有没用的提示,但建议新手改前者,自己调试的时候可以再改回来。
避坑提醒:改完php.ini一定要重启PHP服务!宝塔面板直接点“服务”标签里的“重启”就行;虚拟主机可能要等个5-10分钟自动生效;自己的服务器的话,apache环境敲`service apache2 restart`,nginx+php-fpm敲`service php[版本号]-fpm restart`。
3. 加个保险:模板里手动屏蔽特定错误页
万一前面两步还漏网了怎么办?比如有些帝国CMS插件有问题,跳出自己的错误提示?我们可以在模板里加个简单的判断,把所有带“error”或者“帝国CMS”关键词的前端输出全换成友好提示。
3.1 找到你的网站核心模板文件
一般帝国CMS的核心模板是`/e/data/template/public/header.temp.php`或者`/e/template/你的模板组/header.html`,这两个文件里加都可以,建议加在header的最前面。
3.2 复制粘贴这段PHP代码进去
```php
网站维护中
网站临时有点小问题,请稍后再来哦~
';
// 停止后续输出
exit;
}
?>
```
这段代码的意思是:先看看网页准备输出的内容里,有没有带错误关键词或者帝国CMS、数据库相关的关键词,有的话就直接清空,换成你自己写的友好提示,然后马上停止输出。
避坑提醒:加完这段代码之后,一定要测试一下你的网站能不能正常打开!别把正常的页面关键词也给匹配到了,比如你网站标题里有“帝国CMS教程”,那肯定会出问题,这时候可以把`帝国CMS`这个关键词从代码里删掉。
好了,今天这三步操作,你现在就可以去试试。先关后台的调试模式,再改PHP的配置文件,最后加个模板里的保险。操作完记得用手机、电脑都刷一遍网站,确认没问题就OK了。要是中间遇到什么问题,比如找不到文件、重启不了PHP,直接评论区留言,我看到会回你。