[开发]SoSite 深度修复计划 — 2026-07-03 21:08

👑Lv.11 元老 🌞 骨干会员
2026-10-23 23:56:55

本文由 FlintHub 开发文档归档发布。原始文档日期见标题前缀,来源:7月5日复制的资料/修复计划202607032108.md。

SoSite 深度修复计划 — 2026-07-03 21:08

基于 深度安全审查报告_20260703.md 的 19 项新增问题 + 5 项历史遗留问题

修复顺序:按安全风险从高到低


执行顺序

第一轮 🔴 P0 (2项)       → 收藏权限绕过 + init.php SQL注入风险
第二轮 🟠 P1 (4项)       → RateLimiter + QA权限 + 签到建表 + 友情链接建表
第三轮 🟡 P2 (5项)       → 删版块孤儿 + RateLimiter补漏 + 批量删附件 + 博客评论限流
第四轮 🟢 P3 (5项)       → SQLite残留 + 空壳Model + 性能优化


第一轮 — 🔴 立即修复

F1 收藏插件权限绕过

  • 文件:plugins/post_favorite/FavoriteController.php
  • 方式:查询时加 JOIN categories 和 WHERE t.category_id IN ($allowedIds)

F2 init.php SQL注入风险

  • 文件:protected/database/init.php
  • 方式:tableExists() 加正则白名单校验

第二轮 — 🟠 尽快修复

F3 签到插件每次请求建表

  • 文件:plugins/daily_checkin/CheckinController.php
  • 方式:建表SQL移到 activate(),doCheckin() 检测表存在用 try-catch 替换 CREATE TABLE IF NOT EXISTS

F4 友情链接每次请求建表

  • 文件:plugins/friend_links/AdminController.php
  • 方式:建表逻辑移到 Plugin::activate()

F5 QA权限控制

  • 文件:plugins/qa/QaController.php
  • 方式:加 Permission::canView() 全局检查

F6 RateLimiter补注册/投票限流

  • 文件:app/Helpers/RateLimiter.php
  • 方式:增加DB存储方案;补充QA、博客评论的限流

第三轮 — 🟡 建议修复

F7 删版块孤儿帖子

  • 文件:app/Models/Category.php
  • 方式:删除前检测帖子数,提示先转移

F8 批量删除清理附件

  • 文件:app/Models/Thread.php, app/Models/Blog.php
  • 方式:批量删除前记录附件文件名并清理

F9 博客评论限流

  • 文件:app/Controllers/BlogController.php
  • 方式:加 RateLimiter::hit('blog_comment', 10, 60)

F10 QA控制器加RateLimiter

  • 文件:plugins/qa/QaController.php
  • 方式:save/answer/vote 加限流

第四轮 — 🟢 清理优化

F11 删除插件中SQLite残留

  • 涉及文件:daily_checkin, friend_links, post_favorite
  • 方式:统一为MySQL语法

F12 空Model类清理(可延后)

  • 涉及文件:约6个空壳Model
  • 方式:删除无实际方法的

F13 User::getStats() 合并查询

  • 文件:app/Models/User.php
  • 方式:合并为单条多子查询

F14 Post查询精简

  • 文件:app/Models/Post.php
  • 方式:减少冗余字段

F15 清除 $_GET['r'] 回退

  • 文件:app/Core/Router.php
  • 方式:限制或移除 fallback
轻量级、高性能、零 MySQL 依赖的PHP社区系统。
| 瀏覽 5 次 | 回覆 0 次

全部回覆 (0)

暫無回覆

請 登入