苹果CMS基于PHP开发,PHP环境的安全性是系统的第一道防线。我们需要通过修改php.ini文件来禁用高危函数,防止恶意代码执行。
找到服务器上的php.ini文件(通常位于/etc/php.ini或/usr/local/php/etc/php.ini),使用编辑器打开,找到disable_functions配置项。如果不存在则手动添加。为了防止后门或Webshell执行系统命令,必须将以下函数列入禁用名单:
操作注意:修改完成后必须重启PHP-FPM服务才能生效,执行命令service php-fpm restart或systemctl restart php-fpm。
隐藏PHP版本号以减少信息泄露。在php.ini中设置:
同时,限制PHP脚本只能访问网站目录,防止跨站攻击。在php.ini或网站对应的.user.ini中配置:
Web服务器层面的配置主要防止目录遍历和敏感文件泄露。以下是针对Nginx的详细配置,请将其添加到网站对应的.conf配置文件的server块中。
1. 禁止访问隐藏文件
防止黑客访问.git、.env或.htaccess等敏感文件。
2. 禁止特定目录执行PHP
苹果CMS的上传目录(通常是uploads或static)如果被上传了Webshell,禁止该目录执行PHP可直接阻断攻击。
3. 禁止访问敏感目录
直接禁止访问苹果CMS的核心应用目录和运行时目录。
```nginx location ~ ^/(application|runtime|database|install)/ { deny all; } ```4. 限制请求方法
只允许GET和POST请求,屏蔽其他可能被利用的HTTP方法。
```nginx if ($request_method !~ ^(GET|POST)$ ) { return 403; } ```配置完成后,执行nginx -t测试语法,无误后执行nginx -s reload重载配置。
数据库是CMS的核心,切勿使用Root账号连接数据库。我们需要创建一个权限受限的专用数据库用户。
1. 创建受限用户
登录MySQL管理终端,执行以下SQL命令。请将maccms_db替换为你的数据库名,maccms_user替换为自定义用户名,StrongPassword123!替换为强密码。
2. 修改CMS配置文件
打开苹果CMS根目录下的application/database.php文件,将数据库用户名和密码更新为上述创建的受限账号。
3. 修改数据表前缀
默认的mac_前缀容易被SQL注入工具猜解。在安装时或安装后通过工具修改为随机前缀,例如mac_x9k2_,并在配置文件中同步修改prefix参数。
不正确的文件权限是系统被篡改的主要原因。请严格按照以下标准设置Linux文件权限。
1. 设置所有者和组

假设Web服务器用户是www,在网站根目录执行:
2. 设置目录权限
所有目录设置为755,确保所有者可读写执行,组和其他用户只能读和执行。
```bash find /www/wwwroot/你的网站目录 -type d -exec chmod 755 {} \; ```3. 设置文件权限
所有文件设置为644,确保所有者可读写,其他人只读。特别要注意,application目录下的配置文件如果是写入操作较少,建议设置为444(只读),防止被在线篡改。
4. 锁定核心配置文件
对于application/database.php和application/route.php等核心配置,在配置好环境后,使用chattr命令锁定,防止任何用户(包括Root)修改或删除。
如需修改配置,需先执行chattr -i解锁。
针对CMS本身的逻辑漏洞,我们需要进行代码层面的微调。
1. 删除安装入口文件
安装完成后,立即删除根目录下的install.php或install目录,防止被重装攻击。
2. 修改后台入口路径
默认后台地址/admin.php是攻击重点。直接重命名该文件即可有效防护。
修改后,需要同步打开application/route.php,检查是否有硬编码的路由定义,确保新路径能正常访问。建议配合Nginx的auth_basic模块为后台增加一层HTTP Basic认证,双重保险。
3. 开启XSS过滤
在public/index.php入口文件的最上方,添加全局输入过滤代码,拦截常见的XSS恶意字符。