Files
coolcoth.com/网站审计与后台美化报告.md
2026-08-08 17:19:44 +08:00

93 lines
5.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 圣巧依 / 酷冰甲 CMS — 完整性 · 安全性审计 & 后台美化报告
- 本地:`G:\www\phpEnv\www\圣巧依新的`
- 远端:https://st-joyapparel.com/ (后台 `admin`
- 技术栈:原生 PHP MVC(自研路由/View/Model),MySQL / 文件双驱动
- 说明:项目为 PHP 服务端渲染,与 Nuxt/Nuxt-UI 无关,本次未引入前端框架。
---
## 一、完整性检查(结论:结构完整,运行正常)
| 项目 | 结果 |
|---|---|
| 路由分发 `App::run` / `dispatch` | 正常,前台/后台/CRM/PSI 分区清晰 |
| 自愈安装 `Installer::upgrade` | 正常,缺表自动补齐(本地空库首访即建表) |
| 本地启动(PHP 8.1 内置服务器) | 成功,`/admin/login` HTTP 200 |
| 登录后仪表盘 `/admin` | 成功渲染(22KB),**无 PHP 报错/警告** |
| 静态资源 `serveFile` | 正常,且有目录穿越防护(realpath 前缀校验) |
| 权限模型 | 完善:`admin_can` 能力位 + `super_admin/admin/user` 角色 + CRM/PSI 子系统角色 |
> 已核验:登录 → 仪表盘链路可用,各导航项 SVG 图标正确输出(共 40 个内联 SVG)。
---
## 二、安全性审计
### 已有的良好实践(保持)
- **SQL 注入**`Core\Model` 全量使用 PDO 预处理,未见拼接。✅
- **CSRF**`csrf_field()` / `csrf_check()``hash_equals` 常量时间比较)。✅
- **密码**`password_hash` / `password_verify`。✅
- **会话加固**`HttpOnly` + `SameSite=Lax`HTTPS 下 `Secure`,登录后 `session_regenerate_id`。✅
- **登录限流**:失败次数限制,防暴力破解。✅
- **安全响应头**`apply_security_headers()`(含 CSP、X-Frame-Options 等)。✅
- **XSS 输出**:视图统一 `e()` 转义。✅
- **生产后门**`allow_config_fallback=false`,已封堵配置文件兜底账号。✅
### 🔴 高危(需你在服务器侧尽快处理)
1. **远端默认密码 `admin888` 仍可登录**
- 配置注释已注明"远端已实测默认密码可登录"。数据库中 `admin` 账户口令仍是弱口令。
- **动作**:登录后台 → 修改密码,改为 12 位以上强口令;建议同时新建个人管理员账号、停用/重命名默认 `admin`
- 本地代码无法改远端数据库口令,必须手动操作。
2. **`config/config.php` 明文数据库凭据入库到仓库**
- `git status` 显示仓库在版本控制下,明文库名/账号/密码一旦泄露即可被连库。
- **动作**:将 `config/config.php` 加入 `.gitignore`;生产用环境变量或服务器本地不入库的配置;若已 push 过,需在服务器**轮换数据库密码**。
### 🟠 中危(本次已在代码层修复)
3. **文件上传仅校验扩展名 → SVG 存储型 XSS / 伪造图片**
-`uploadFile()` 只看扩展名,允许 `.svg`SVG 可内嵌 `<script>`/`on*` 事件,作为公开图片被访问即触发 XSS。
- **已修复**`app/Controllers/Admin/AdminController.php`):
- 光栅图用 `getimagesize` + `finfo` 真实 MIME 双校验;
- 新增 8MB 体积上限,防 DoS;
- SVG 落盘前 `sanitizeSvg()` 消毒:剥离 `<script>`/`<foreignObject>`/`on*` 事件/`javascript:` 协议/`<a>`
- 文件名随机化,杜绝覆盖与路径穿越。
### 🟡 建议(加固项,未改动)
4. **上传目录禁执行**:给 `public/assets/uploads` 增加"禁止解析 PHP"规则(Nginx `location` 或 Apache `.htaccess`),纵深防御。
5. **HTTPS 强制**:确认全站 301 跳转 HTTPS + HSTS(仓库已有 `bt-ssl-dns.md`,请核对生效)。
6. **备份**:定期数据库 + `assets/uploads` 备份。
---
## 三、后台美化(本次已完成)
针对"后台太简陋",在**不改动业务逻辑**前提下重构了视觉层:
### 设计系统
- 新增 CSS 设计令牌(品牌渐变、深色侧栏、圆角、三级阴影),统一 `admin.css`
- 全站**弃用 emoji 图标**,改为内联 **Lucide 线性 SVG**(新增 `admin_icon()` 助手,随主题变色、跨平台一致,符合规范)。
### 具体改造
- **侧边栏**:深色渐变、SVG 图标、悬停/选中态(左侧高亮条 + 品牌渐变),滚动条美化,底部"查看前台"入口。
- **顶栏**:毛玻璃粘顶、圆形头像、图标化按钮(修改密码/退出)。
- **登录页**:品牌徽标、渐变光晕背景、卡片投影、占位提示、安全提示。
- **仪表盘**:4 张彩色统计卡(带图标徽标、悬停上浮)+ "快捷入口"卡片网格 + 最近新闻表格。
- **组件**:按钮/表格/表单/徽标统一圆角、阴影、悬停微交互;表头小写字距优化。
- **子系统(CRM/PSI)**:同步套用新导航与图标风格。
### 改动文件
- `app/Core/Helper.php`:新增 `admin_icon()`;导航项 emoji → 图标名(`ic`)。
- `public/assets/css/admin.css`:设计令牌 + 侧栏/顶栏/卡片/按钮/表格/表单重构。
- `app/Views/layouts/admin.php``app/Views/layouts/subsys.php`SVG 图标化布局。
- `app/Views/admin/dashboard.php``app/Views/admin/login.php`:重构。
---
## 四、待你确认/执行清单
- [ ] **立即**:登录后台修改 `admin` 弱口令(当前 `admin888`)。
- [ ] `config/config.php` 加入 `.gitignore`;如已提交,服务器轮换 DB 密码。
- [ ]`assets/uploads` 增加禁 PHP 执行规则。
- [ ] 核对 HTTPS 强跳与 HSTS。
- [ ] 部署后台美化到远端(上传上述改动文件即可,无需数据库变更)。