[审计]SoSite 全程序安全与逻辑审计计划(2026-08-12)

👑Lv.11 元老 🌞 骨干会员
2026-10-25 00:15:44

本文由 FlintHub 开发文档归档发布。原始文档日期见标题前缀,来源:8月13日备份/审计计划.md。

SoSite 全程序安全与逻辑审计计划(2026-08-12)

审计方式:只读遍历 + 静态扫描 + 人工走读 + 调用链追踪,交叉验证 2026-08-06 审计报告整改情况。

范围:app/(Controllers / Core / Helpers / Models / Views)、plugins/(16 个插件)、assets/、protected/、config.php、根目录入口文件。

原则:审计阶段不修改任何代码(除非用户明确指示修复),所有发现汇总为问题清单供决策。


一、审计目标

  1. 发现可利用的安全漏洞(高危优先):SQL 注入、XSS、CSRF、SSRF、文件上传、路径穿越、命令注入、认证绕过、越权(IDOR)、敏感信息泄露。
  2. 发现业务逻辑缺陷:权限校验缺失、积分/勋章/投票等核心业务可被刷或绕过、事务与数据一致性、并发竞态、缓存一致性、状态机流转异常、错误路径处理不当。
  3. 复核 2026-08-06 审计报告(审计20260806.md)中的 🔴/🟠 问题是否已修复,新增问题是否引入新风险。
  4. 输出:按优先级分级的完整问题清单 + 修复建议(定位到文件:行)。

二、审计维度与检查项

A. 安全审计维度

#维度关键检查项
A1SQL 注入所有 SQL 是否参数化;Database::query 占位符使用(同命名占位符复用 HY093);IN (...)/LIKE/ORDER BY/LIMIT 拼接;SHOW 语句;quote() 内联点是否净化
A2XSS(存储/反射/DOM)视图所有输出是否 e();属性值、内联 style、URL 输出;formatPostContent/decodeContent 白名单标签;编辑器内容渲染;JS 端 innerHTML/eval/dangerouslySetInnerHTML 等价点
A3CSRF所有写操作(发帖/回帖/评论/私信/上传/投票/后台)是否 Csrf::verifyOrDie();插件自带表单/JS 是否带 token;Ajax 写接口
A4文件上传扩展名+MIME 双白名单;finfo 兜底逻辑;文件名随机化;上传目录禁止脚本执行(assets/uploads/ 防护);图片真实性校验;像素炸弹;附件下载/删除路径
A5SSRFApiController::fetchImage 及类似 URL 抓取点:内网段封禁(169.254/100.64/127/10/172.16/192.168)、重定向逐跳校验、DNS rebinding、端口限制、协议限制
A6命令注入shell_exec/system/exec/passthru/proc_open/popen 全库扫描;mysqlImport 的 SQL 任意执行面
A7认证与会话密码哈希算法;登录限流(账号/IP);忘记密码流程;会话固定/劫持防护;RememberMe token 安全;admin_verified_at 30 分钟二次验证覆盖范围(前台 admin-only 操作是否有绕过)
A8越权(IDOR)增删改查接口的属主校验;水平越权(改他人帖子/删除他人附件/读他人私信/改他人设置);垂直越权(前台 admin-only 操作);管理后台接口权限
A9信息泄露搜索接口字段裁剪(email/role/status);错误信息回显;protected/ 目录可访问性;.htaccess/nginx 配置;调试开关;异常堆栈暴露
A10配置与部署安全config.php 弱口令(fastbb/123456);MAIL_PASS_KEY 固定密钥;SESSION 配置;SITE_URL/BASE_PATH 来源;uploads 目录防护;目录遍历入口
A11插件安全plugin.json/hooks 加载链是否有任意代码执行面;插件缓存文件(plugins_cache.php)权限与校验;插件控制器权限(admin/前台)是否与插件定位一致;跨插件数据流(如通知、勋章钩子)

B. 逻辑审计维度

#维度关键检查项
B1权限与状态流转帖子/博客/评论的创建→审核→编辑→删除状态机;草稿/审核状态;软删除与恢复
B2积分/勋章/投票核心业务积分加减点是否有调用方权限校验、防重复、防刷(发帖+5、回帖、每日签到、投票);勋章自动规则(发帖数/回帖数/注册天数/积分)计数口径与防重复颁发;投票幂等与截止
B3频率限制与防刷发新主题/回帖/评论/私信/上传/签到各自限流;RateLimiter 实现(TOCTOU、文件锁);验证码覆盖(登录/注册/忘记密码)
B4事务与一致性多表写操作是否事务包裹(发帖+积分、回帖+计数、勋章颁发、下载扣积分);失败回滚;计数缓存(post_count_map/thread_count_map)与库表一致性
B5并发与竞态收藏/投票/勋章佩戴的唯一键防重;领取类操作(红包/签到)并发;文件锁/数据库锁使用
B6消息/通知逻辑私信收发/已读/删除权限;通知已读/未读计数;批量标记逻辑
B7附件生命周期上传→归属→下载→删除全链路;孤儿附件清理逻辑是否会误删(medals 目录不在 uploads 的约定);删除帖子时附件清理
B8搜索/分页/排序搜索词注入(FTS/LIKE 转义);分页参数越界;排序字段白名单;sanitizeOrderBy 黑名单改白名单
B9插件间交互hooks 调用顺序与返回值契约;controller_view_before 批量注入的数据来源;插件卸载/重装后的残留(表/缓存文件/导航链接)
B10错误处理未捕获异常路径;try/catch 吞错导致状态不一致;404/403 视图存在性(上次审计悬空引用已确认 errors/404.php 存在,复核其余);死代码/零调用方法


三、审计方法

  1. 静态扫描:grep/ast_grep 模式匹配高危函数与模式(SQL 拼接、echo 未转义、危险函数、权限校验缺失)。
  2. 人工走读:对命中点与核心控制器(Auth/Thread/Post/Profile/Message/Upload/Api/Admin 系)逐文件阅读核实。
  3. 调用链追踪:trace_callers/trace_callees/trace_chain 确认敏感函数(积分、删除、颁发、下载)的调用入口与权限上下文。
  4. 复核上次报告:逐条对照 审计20260806.md 的 S/X/U/R/P 问题 → 确认修复状态(✅已修复 / ⚠️部分 / ❌未修复),并排查是否引入回归。
  5. 动态验证(仅需时):临时 PHP 脚本验证 SQL 行为/边界(注意:cmd 无 php,用 D:/phpstudy_pro/Extensions/php/php8.2.9nts/php.exe;只插删测试数据,不动插件 activated 状态;验证脚本用完即删)。
  6. 不修改代码:审计阶段只读,问题清单交付后由用户决定是否修复。

四、审计阶段安排

阶段内容产出
P0 准备环境确认(PHP 路径、DB 可连)、代码库清单、基线基线清单
P1 安全审计A1-A11 逐维度扫描+走读安全问题表
P2 逻辑审计B1-B10 逐维度走读+调用链逻辑问题表
P3 插件专项16 个插件逐个过权限/钩子/数据流插件问题表
P4 复核整改对照 2026-08-06 报告逐条核实整改状态表
P5 汇总优先级矩阵(🔴高/🟠中/🟡低)+ 修复建议 + 整改顺序审计报告


五、交付物

  1. 审计报告.md(或按需拆分为 审计报告-安全.md / 审计报告-逻辑.md):完整问题清单,每条含 位置(文件:行)、风险等级、问题描述、攻击场景/触发路径、修复建议。
  2. 整改状态表:2026-08-06 报告问题 → 当前状态。
  3. 若用户要求,进入修复阶段(另行指示)。

六、审计红线(本次审计纪律)

  • 只读审计,不修改任何源文件;需要验证时用临时脚本(用完即删)。
  • 不执行/不部署任何破坏性操作;不动数据库真实数据(如需验证用事务回滚或只读查询)。
  • 不修改插件 activated 状态、不删插件缓存文件(只读检查)。
  • 发现高危问题立即单独汇报,不等完整报告。

计划由 2026-08-12 会话生成。待用户指令后开始正式审计。

轻量级、高性能、零 MySQL 依赖的PHP社区系统。
| 浏览 3 次 | 回复 0 次

全部回复 (0)

暂无回复

请 登录