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

5.4 KiB
Raw Blame History

圣巧依 / 酷冰甲 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 预处理,未见拼接。
  • CSRFcsrf_field() / csrf_check()hash_equals 常量时间比较)。
  • 密码password_hash / password_verify
  • 会话加固HttpOnly + SameSite=LaxHTTPS 下 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 过,需在服务器轮换数据库密码

🟠 中危(本次已在代码层修复)

  1. 文件上传仅校验扩展名 → SVG 存储型 XSS / 伪造图片
    • uploadFile() 只看扩展名,允许 .svgSVG 可内嵌 <script>/on* 事件,作为公开图片被访问即触发 XSS。
    • 已修复app/Controllers/Admin/AdminController.php):
      • 光栅图用 getimagesize + finfo 真实 MIME 双校验;
      • 新增 8MB 体积上限,防 DoS
      • SVG 落盘前 sanitizeSvg() 消毒:剥离 <script>/<foreignObject>/on* 事件/javascript: 协议/<a>
      • 文件名随机化,杜绝覆盖与路径穿越。

🟡 建议(加固项,未改动)

  1. 上传目录禁执行:给 public/assets/uploads 增加"禁止解析 PHP"规则(Nginx location 或 Apache .htaccess),纵深防御。
  2. HTTPS 强制:确认全站 301 跳转 HTTPS + HSTS(仓库已有 bt-ssl-dns.md,请核对生效)。
  3. 备份:定期数据库 + 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.phpapp/Views/layouts/subsys.phpSVG 图标化布局。
  • app/Views/admin/dashboard.phpapp/Views/admin/login.php:重构。

四、待你确认/执行清单

  • 立即:登录后台修改 admin 弱口令(当前 admin888)。
  • config/config.php 加入 .gitignore;如已提交,服务器轮换 DB 密码。
  • assets/uploads 增加禁 PHP 执行规则。
  • 核对 HTTPS 强跳与 HSTS。
  • 部署后台美化到远端(上传上述改动文件即可,无需数据库变更)。