# 代码审查标准与流程 > 适用项目:B2B Trade 主题(fragrance-trade) > 技术栈:WordPress 经典主题 / PHP 7.4+ / Bootstrap 5.3 / jQuery > 版本:v1.0 | 2026-07-24 --- ## 一、审查原则 1. **安全优先** — WordPress 主题的 XSS / SQL 注入 / CSRF 是红线 2. **就事论事** — 评论针对代码,不针对人 3. **说清楚为什么** — 不只说"改这个",要解释原因和潜在风险 4. **给方向不给答案** — 引导作者自己思考,除非是明确的安全漏洞 5. **赞美好代码** — 发现优秀实践要明确指出,让团队学习 --- ## 二、优先级体系 每个审查意见必须标注以下级别之一: | 级别 | 标记 | 含义 | 处理要求 | |------|------|------|----------| | 🔴 阻断 | Blocker | 安全漏洞 / 数据丢失 / 破坏功能 | **必须修复后才能合并** | | 🟡 建议 | Suggestion | 输入验证缺失 / 性能问题 / 可维护性 | **应当修复,可协商** | | 💭 细节 | Nit | 命名 / 风格 / 文档 | 修不修都行,不阻塞 | --- ## 三、WordPress 主题专项审查清单 ### 🔴 阻断级检查项(必须全部通过) #### 3.1 安全性 - [ ] **直接访问防护** — 所有 PHP 文件以 `if ( ! defined( 'ABSPATH' ) ) exit;` 开头 - [ ] **SQL 注入** — 禁止拼接 SQL;必须使用 `$wpdb->prepare()` 或 WP API(`get_posts()`, `WP_Query`) - [ ] **XSS 防护** — 所有输出必须经过转义: - HTML 文本 → `esc_html()` - URL → `esc_url()` - 属性 → `esc_attr()` - 富文本 → `wp_kses_post()` - [ ] **CSRF 防护** — 所有表单提交 / POST 处理必须有 `wp_nonce_field()` + `check_admin_referer()` - [ ] **输入净化** — 所有 `$_POST` / `$_GET` / `$_SERVER` 必须用 `wp_unslash()` + 对应 `sanitize_*` 函数 - [ ] **邮件头注入** — 从用户输入构造邮件头时,必须剥离 `\r\n` - [ ] **文件包含** — 禁止用户输入直接传入 `include` / `require` / `get_template_part()` - [ ] **权限检查** — 任何管理员操作必须有 `current_user_can()` 检查 #### 3.2 功能正确性 - [ ] **关键路径错误处理** — 表单提交失败有 fallback(非空白白屏) - [ ] **数据完整性** — 不会因空值 / 缺失字段导致 fatal error - [ ] **重定向安全** — 使用 `wp_safe_redirect()` + `wp_validate_redirect()`,禁止直接 `header('Location:')` ### 🟡 建议级检查项 #### 3.3 输入验证与数据 - [ ] Customizer 字段是否有对应类型的 `sanitize_callback` - [ ] `get_theme_mod()` 取值后是否有默认值兜底 - [ ] 用户上传的 URL 是否用 `esc_url_raw()` 存入、`esc_url()` 输出 #### 3.4 性能 - [ ] **N+1 查询** — 循环内不执行数据库查询,提前预取 - [ ] **资源加载** — 脚本用 `wp_enqueue_script`,不硬编码 `