> 来源：https://mac-cms.com/cms/cms-security
> 简介：自建 MacCMS（苹果CMS）必做的安全加固：ThinkPHP5 远程命令执行（RCE）漏洞的风险与防护、后台入口改名、关闭调试模式、目录与文件权限收紧、及时升级打补丁。
> 更新：2026-11-02

# MacCMS 安全加固

把 MacCMS 放到公网上，就等于把一个老框架的站点暴露给全世界。MacCMS V10 基于 ThinkPHP5，而 ThinkPHP5 历史上出过影响很大的漏洞，默认配置又比较宽松。**自建站必须加固**，否则很容易被扫描器挂马、植入广告、甚至拿到服务器权限。下面几件事装完就该做。

## 防住 ThinkPHP5 远程命令执行（RCE）

**风险**：ThinkPHP5 曾被爆出远程命令执行漏洞，攻击者构造一条特殊的 URL，就能让服务器执行任意命令。典型的攻击 payload 形如：

```
?s=/index/\think\app/invokefunction&function=call_user_func_array...
```

这类请求如果打中没打补丁的站点，后果非常严重（相当于把服务器交出去）。

::: tip 本仓库已自带补丁
我们对本仓库源码做过[只读安全审计](/cms/cms-security-audit)：当前框架是 ThinkPHP **5.0.24**，`think\App::module()` 已用正则白名单拦截 `\think\app` 这类命名空间注入，经典 RCE payload 会直接命中 404。也就是说框架层已打上补丁，下面的加固更多是**纵深防御**，不是补丁本身缺失。
:::

**防护**：

- **升级到打了补丁的版本**：关注 [magicblack/maccms10](https://github.com/magicblack/maccms10)（备用 [maccmsapp/maccms10](https://github.com/maccmsapp/maccms10)）的发布，第一时间更新。这是最根本的办法。
- **加 WAF / 拦截规则**：在 Nginx 或云防火墙里拦掉带 `invokefunction`、`call_user_func_array`、`\think\` 这类特征的请求，拦掉 ThinkPHP5 其它历史 CVE（如 SQL 注入系列）的变体。
- **别在生产开调试**：调试模式会把报错细节暴露给攻击者，等于帮他们探路（见下文）。

## 后台入口改名

**风险**：默认后台是 `admin.php`，谁都知道，等于把家门口挂了块牌子。

**防护**：进网站根目录，把 `admin.php` 改成别人猜不到的名字，比如 `admin7854.php`，之后用新地址进后台。改完记得同步改[伪静态规则](/cms/cms-troubleshooting#除首页外全部-404)里 `admin.php` 那一行，否则后台会 404。

## 关闭调试模式

**风险**：开着调试（`app_debug` / `app_trace`）时，一旦报错就把文件路径、SQL、框架版本等细节直接显示出来，这些都是攻击者想要的信息。

**防护**：生产环境把调试和 Trace 关掉。配置在 `application/config.php`：

```php
return [
    'app_debug' => false,
    'app_trace' => false,
    // ...
];
```

## 收紧目录与文件权限

**风险**：权限给太宽（比如全目录 777），一旦有文件被上传或篡改，影响范围会扩大。

**防护**：按最小权限来——

- 只有需要写入的目录可写：`runtime`（缓存）、`upload`（附件）。
- 其余目录和文件给只读 / 最小权限，别一股脑 777。
- 安装完成后，锁住或删掉安装相关目录，避免被人触发重装（配合删 `install.lock`）。

## 及时升级打补丁

安全不是一次性的事。框架和 CMS 都会陆续修漏洞，装完就不管，迟早被老漏洞打中。

- 关注 [magicblack/maccms10](https://github.com/magicblack/maccms10) 的更新与安全公告。
- 升级前先备份数据库和配置文件。
- 升级后回归测试一遍前台、后台、采集和 API 接口。

## 想知道源码里有没有后门？

我们对本仓库源码做过一次只读的后门排查：按危险函数（`eval` / `assert` / `system` / `base64_decode` 等）和 webshell 特征全仓扫描，逐条看上下文判定。**范围内未发现后门或 webshell**——命中的点都是框架 / 业务的正常用法（比如模板引擎、后台取 CPU 占用、采集参数解码）。完整的扫描范围、命中点和判定理由见[源码安全审计报告](/cms/cms-security-audit)。

::: warning 结论对应特定版本
本次审计于 **2026-10-12** 完成，对应源码版本号 **`2026.1000.4056`**（`application/extra/version.php`），上游仓库 [github.com/magicblack/maccms10](https://github.com/magicblack/maccms10)。审计结论只对该版本成立——官方发布节奏较快，**你手上的源码若版本号不同，请以[审计报告](/cms/cms-security-audit)里的方法自行重新复核**，别直接套用「无后门」结论。
:::

---

遇到具体报错先看[部署排障大全](/cms/cms-troubleshooting)，装站流程见[安装教程](/cms/index)，想了解框架结构见[源码结构分析](/cms/cms-source-analysis)。
