一、安全性检测(12 项)
| # | 规则名称 | 检测内容 | 风险等级 |
|---|---|---|---|
| 1 | CSRF 跨站请求伪造检测 | 检测数据库/文件写操作未验证 formhash,存在 CSRF 风险 | 🔴 严重 |
| 2 | 危险函数检测 | 检测 eval/assert/create_function 等代码执行函数 | 🔴 严重 |
| 3 | $_REQUEST 超全局变量检测 | 检测使用 $_REQUEST 混合 GET/POST/COOKIE 数据 | 🔴 严重 |
| 4 | XSS 输出检测 | 检测直接输出 HTML 内容未转义 | 🟡 中等 |
| 5 | 已弃用 GPC 方式检测 | 检测使用 $_G['gp_xxx'] 获取请求数据 | 🟡 中等 |
| 6 | SQL 注入风险检测 | 检测字符串拼接 SQL 语句 | 🟡 中等 |
| 7 | Header 跳转后未退出检测 | 检测 header() 跳转后未调用 exit | 🟡 中等 |
| 8 | submitcheck() 使用检测 | 检测 submitcheck() 使用不当 | 🟡 中等 |
| 9 | 用户 UID 验证检测 | 检测缺少用户 UID 验证 | 🟡 中等 |
| 10 | 非标准数组键检测 | 检测非标准数组键访问 | 🟡 中等 |
| 11 | 全局钩子查询检测 | 检测全局钩子中执行数据库查询 | 🟡 中等 |
| 12 | extract() 函数检测 | 检测 extract() 函数可能导致变量覆盖 | 🟡 中等 |
二、Discuz! 规范检测(15 项)
| # | 规则名称 | 检测内容 | 优先级 |
|---|---|---|---|
| 13 | ADMINSCRIPT 常量检测 | 检测使用 admin.php 而非 ADMINSCRIPT 常量 | PASS1 |
| 14 | HTTP_HOST 检测 | 检测直接使用 $_SERVER['HTTP_HOST'] | PASS1 |
| 15 | 绝对 URL 检测 | 检测使用绝对 URL 路径 | PASS1 |
| 16 | 钩子异步代码检测 | 检测钩子函数中使用异步代码 | PASS1 |
| 17 | curl 函数检测 | 检测原生 curl 函数,应使用 dfsockopen() | PASS1 |
| 18 | 调试代码检测 | 检测 print_r/var_dump 等调试代码未清理 | PASS1 |
| 19 | 动态包含检测 | 检测动态 include/require | PASS1 |
| 20 | 钩子返回值检测 | 检测钩子函数缺少返回值 | PASS1 |
| 21 | IN_ADMINCP 常量检测 | 检测后台文件缺少 IN_ADMINCP 检测 | PASS1 |
| 22 | IN_DISCUZ 常量检测 | 检测缺少 IN_DISCUZ 常量检测 | PASS1 |
| 23 | PHP4 构造函数检测 | 检测 PHP4 风格构造函数 | PASS1 |
| 24 | preg_replace /e 描述符检测 | 检测 preg_replace 中使用/e 描述符(PHP7 废弃) | PASS1 |
| 25 | setcookie() 函数检测 | 检测直接调用 setcookie() 函数 | PASS1 |
| 26 | 表名前缀检测 | 检测表名未使用 DB::table() 包装 | PASS1 |
| 27 | 循环查询检测 | 检测循环中执行数据库查询 | PASS1 |
三、PHP8 兼容性检测(11 项)
| # | 规则名称 | 检测内容 | PHP8 变更 |
|---|---|---|---|
| 28 | 数组下标引号检测 | 检测数组下标未加引号(PHP8 Warning) | ⚠️ Warning |
| 29 | 未定义常量检测 | 检测使用未定义常量(PHP8 Warning) | ⚠️ Warning |
| 30 | 构造函数属性提升检测 | 检测 PHP8 构造函数属性提升语法 | ❌ 不兼容 |
| 31 | 联合类型检测 | 检测联合类型声明 (Type1|Type2) | ❌ 不兼容 |
| 32 | 空安全操作符检测 | 检测空安全操作符 (?->) | ❌ 不兼容 |
| 33 | match 表达式检测 | 检测 match 表达式 | ❌ 不兼容 |
| 34 | 命名参数检测 | 检测命名参数 | ❌ 不兼容 |
| 35 | Attributes 注解检测 | 检测 PHP8 Attributes 注解语法 | ❌ 不兼容 |
| 36 | 新增字符串函数检测 | 检测 str_contains/str_starts_with/str_ends_with | ❌ 不兼容 |
| 37 | 可变变量检测 | 检测可变变量 ($$var) | ⚠️ 严格模式 |
| 38 | 字符串连接优先级检测 | 检测字符串连接运算符优先级变化 | ⚠️ 行为变更 |
四、代码质量与维护性检测(8 项)
| # | 规则名称 | 检测内容 | 影响 |
|---|---|---|---|
| 39 | HTML 绝对 URL 检测 | 检测 HTML 中使用绝对 URL | 可维护性 |
| 40 | HTML 输出后退出检测 | 检测 HTML 输出后未退出 | 逻辑完整性 |
| 41 | HTML 非 ASCII 字符检测 | 检测 HTML 中包含非 ASCII 字符 | 编码规范 |
| 42 | PHP 非 ASCII 字符检测 | 检测 PHP 文件包含非 ASCII 字符 | 编码规范 |
| 43 | install.php 检测 | 检测 install.php 中的问题 | 安装脚本规范 |
| 44 | 缓存文件检测 | 检测缓存文件保存问题 | 性能优化 |
| 45 | 上传文件检测 | 检测上传文件处理问题 | 安全性 |
| 46 | uninstall.php 检测 | 检测 uninstall.php 卸载脚本问题 | 卸载规范 |