适用人群
本教程适用于以下三类人:

苹果CMS防注入终极指南,从零搭建安全影视站,避开99%的漏洞
- 刚接触苹果CMS、想搭建影视站但不懂安全的新手站长;
- 有一定PHP基础,希望系统学习防注入配置的开发者;
- 负责网站运维,被SQL注入、XSS攻击搞得焦头烂额的管理员。
无论你是用宝塔面板还是手动配置LNMP环境,只要跟着操作,就能搭出一个具备基本防注入能力的苹果CMS站点。
第一步:环境准备与基础安装
1 软件版本选择(踩坑预警)
- PHP版本:推荐7.4或8.0(苹果CMS v10/v20均支持),不要用PHP 5.x,漏洞太多。
- 数据库:MySQL 5.7 或 MariaDB 10.3+,务必关闭
local-infile。 - Web服务器:Nginx(推荐)或 Apache,建议Nginx 1.18+。
- 苹果CMS版本:从官方GitHub或可信渠道下载最新版,切勿用第三方修改版(99%含后门)。
2 基础安装步骤(以宝塔面板为例)
- 创建站点:宝塔后台→网站→添加站点,输入域名,选择PHP版本,数据库选择MySQL,自动创建。
- 上传源码:将苹果CMS压缩包上传至站点根目录,解压,设置
runtime、upload目录权限为755。 - 安装:浏览器访问域名,按向导填写数据库信息,后台地址默认为
/admin。 - 修改默认密码:进入后台,立即修改管理员账号密码,不要用admin/admin这类弱口令。
注意:安装完成后,删除install目录(或改名),防止重装漏洞。
第二步:核心防注入配置(手把手操作)
1 苹果CMS自带防注入开关(90%的人不知道)
苹果CMS后台→系统→系统参数→安全设置:
- 开启SQL防注入:选择“是”。
- 开启XSS过滤:选择“是”。
- 后台访问目录:修改为随机字符串(如
/abc123),别再留默认的/admin。 - 后台登录验证码:开启。
这些开关本质是调用了application/extra.php中的过滤器,但仅靠它不够,必须配合服务器规则。
2 Nginx防注入规则(粘贴即用)
在Nginx配置文件的server块中,添加以下内容(宝塔用户:网站设置→配置文件):
# 阻止常见SQL注入关键字
if ($query_string ~* "(\%27)|(\')|(\-\-)|(\%23)|(#)" ) {
return 403;
}
if ($query_string ~* "union.*select.*\(|select.*from|insert.*into|update.*set|delete.*from" ) {
return 403;
}
# 拦截XSS
if ($query_string ~* "<script|alert|eval|exec|system|passthru|shell_exec" ) {
return 403;
}
# 禁止PHP直接访问用户上传目录
location ~* /upload/.*\.php$ {
deny all;
return 404;
}
# 禁止访问隐藏文件
location ~ /\.(git|svn|htaccess) {
deny all;
}
# 添加安全头
add_header X-Content-Type-Options nosniff;
add_header X-Frame-Options SAMEORIGIN;
add_header X-XSS-Protection "1; mode=block";
踩坑提醒:部分苹果CMS的伪静态规则与上述if判断冲突(如某些播放器调用带特殊符号),解决方式:在if之前对特定路径放行,
location = /api.php {
# 放行API接口,不拦截query_string中的正常参数
try_files $uri $uri/ /api.php?$query_string;
}
3 Apache版防注入(.htaccess文件)
在网站根目录创建.htaccess(注意前面有点),写入:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{QUERY_STRING} (\'|--|#|union.*select|select.*from|insert.*into|delete.*from) [NC]
RewriteRule ^(.*)$ - [F,L]
RewriteCond %{QUERY_STRING} (<script|alert|eval|exec) [NC]
RewriteRule ^(.*)$ - [F,L]
</IfModule>
# 禁止上传目录执行PHP
<Directory "upload">
php_admin_flag engine off
</Directory>
4 PHP安全配置(php.ini)
通过宝面板或手动编辑php.ini,修改以下值:
disable_functions = exec,system,passthru,shell_exec,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source allow_url_fopen = Off allow_url_include = Off open_basedir = /网站根目录:/tmp
注意:open_basedir务必限制到站点根目录和/tmp,否则黑客可通过文件包含漏洞读取整个服务器。
第三步:数据库层加固
1 创建专用数据库用户
不要用root,新建一个用户,权限仅限SELECT, INSERT, UPDATE, DELETE, CREATE, ALTER, INDEX, DROP(不要给FILE、PROCESS、SUPER)。
CREATE USER 'cmsuser'@'localhost' IDENTIFIED BY '强密码@2024!'; GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, ALTER, INDEX, DROP ON `cmsdb`.* TO 'cmsuser'@'localhost'; FLUSH PRIVILEGES;
2 关闭数据库错误回显
苹果CMS的/application/database.php中,将debug设为false,并设置:
'params' => [
PDO::ATTR_ERRMODE => PDO::ERRMODE_SILENT, // 不输出错误信息
],
否则SQL注入失败时泄露表结构。
第四步:常见踩坑与终极防御
1 伪静态规则冲突导致404
很多新手直接把网上复制的Nginx规则整段粘贴,导致苹果CMS伪静态失效,正确做法:将防注入if语句放在location /块之外(即server块内),伪静态规则正常保留。
2 过滤器误杀正常链接
比如播放器请求的URL中包含“select”(如影视分类别名“xuanze”),会被拦截,解决办法:在防注入规则中增加白名单,
if ($query_string ~* "union.*select" && $request_uri !~* "/player/") {
return 403;
}
3 缓存文件被注入
苹果CMS的runtime目录存放缓存,如果配置不当,攻击者可通过文件上传漏洞写入恶意PHP文件,必须设置:
runtime目录禁止PHP执行:Nginx用location ~* /runtime/.*\.php$ { deny all; }- Apache用
<Directory "runtime">php_admin_flag engine off</Directory>
4 后台地址泄露
即使改了/admin,仍可能被扫描器探测到,在Nginx中添加:
location ~* ^/(admin|admin123)$ {
allow 你家的公网IP;
# 或 allow 192.168.1.0/24;
deny all;
}
只允许固定IP访问后台。
第五步:持续安全运维建议
- 定时更新苹果CMS:官方每1-2个月发补丁,关注GitHub Release。
- 日志审计:设置Nginx日志格式包含请求参数,每天检查是否有大量403返回(说明被扫描)。
- 安装WAF插件:宝塔用户可直接安装“Nginx防火墙”插件,开启SQL注入防护(免费版够用)。
- 关闭不必要的功能:后台不要开启“在线编辑模板”、“插件市场直接安装”等高风险功能。
- 定期备份数据库和源码:翻车时能秒恢复。
从环境准备到服务器规则,再到数据库加固和日常运维,这套组合拳能挡住99%的常见注入攻击,安全没有100%,但如果不做这些,你的站点就是肉鸡。立刻去检查你的苹果CMS——开启自带的防注入开关,贴上Nginx规则,改掉默认后台路径,三件事做完,今晚可以睡个好觉。
发表评论