本文由 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