5.4 KiB
5.4 KiB
圣巧依 / 酷冰甲 CMS — 完整性 · 安全性审计 & 后台美化报告
- 本地:
G:\www\phpEnv\www\圣巧依新的 - 远端:https://coolcoth.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,已封堵配置文件兜底账号。✅
🔴 高危(需你在服务器侧尽快处理)
-
远端默认密码
admin888仍可登录- 配置注释已注明"远端已实测默认密码可登录"。数据库中
admin账户口令仍是弱口令。 - 动作:登录后台 → 修改密码,改为 12 位以上强口令;建议同时新建个人管理员账号、停用/重命名默认
admin。 - 本地代码无法改远端数据库口令,必须手动操作。
- 配置注释已注明"远端已实测默认密码可登录"。数据库中
-
config/config.php明文数据库凭据入库到仓库git status显示仓库在版本控制下,明文库名/账号/密码一旦泄露即可被连库。- 动作:将
config/config.php加入.gitignore;生产用环境变量或服务器本地不入库的配置;若已 push 过,需在服务器轮换数据库密码。
🟠 中危(本次已在代码层修复)
- 文件上传仅校验扩展名 → 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>; - 文件名随机化,杜绝覆盖与路径穿越。
- 光栅图用
- 原
🟡 建议(加固项,未改动)
- 上传目录禁执行:给
public/assets/uploads增加"禁止解析 PHP"规则(Nginxlocation或 Apache.htaccess),纵深防御。 - HTTPS 强制:确认全站 301 跳转 HTTPS + HSTS(仓库已有
bt-ssl-dns.md,请核对生效)。 - 备份:定期数据库 +
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。
- 部署后台美化到远端(上传上述改动文件即可,无需数据库变更)。