该技能为 WordPress 插件与主题开发提供系统性的安全指导,适用于开发新插件/主题、审查现有代码、处理用户输入(表单、AJAX、REST API)、输出动态内容、与数据库交互、创建管理页面或设置、实现 AJAX/REST 端点、处理文件上传等场景。
主要能力包括:
- 核心安全原则:尽早清理、延迟转义、始终验证、永不信任用户输入。
- 清理(Sanitization):提供常用清理函数及其适用场景,例如 sanitize_text_field()、sanitize_email()、sanitize_url()、wp_kses_post() 等,并强调超全局变量需先 wp_unslash()。
- 验证(Validation):推荐白名单方式,使用严格比较(===),并提供格式检测、类型检查等函数与示例。
- 转义(Escaping):延迟转义至输出点,提供 esc_html()、esc_attr()、esc_url()、esc_js()、esc_textarea()、wp_kses() 等函数及组合本地化函数(如 esc_html__())。
- 特殊场景处理:动态标签名需使用白名单而非转义;辅助函数输出需在调用点可见转义;核心未转义的值需自行转义。
- 审查方法论:强调审查整个函数及其调用者而非仅 diff,轮流审查整个子系统,并记录未覆盖范围。
- 发布安全门禁:提供 references/release-gate.md 中的流程,包含三种深度(普通变更、敏感变更、安全插件或已发布漏洞)、机械检查命令、书面问题与发布说明模板。
- 附带脚本:scripts/test-escapers.js 检测属性内未编码引号的 JavaScript 转义器;scripts/audit-suppressions.php 列出安全/SQL 嗅探抑制并检查书面理由;scripts/class-symbols.py 检测类文件中未定义的 self:: 或 $this-> 符号。
- 参考文件:request-data-and-client-ip.md、registered-meta-and-core-filters.md、secrets.md、release-gate.md,分别对应不同代码场景。
使用方式:根据当前代码类型加载对应的参考文件;在每次发布前或安全审计时运行发布安全门禁流程;在新环境中先运行 bash scripts/selftest.sh 验证脚本可用性(若 PHP 不在 PATH 中需设置 PHP=/path/to/php)。
适用场景:WordPress 插件/主题开发与安全审查、处理用户输入与输出、数据库交互、管理页面与设置、AJAX/REST 端点、文件上传、发布前安全检查。
限制:该技能为安全指南与审查流程,不提供自动化修复;部分具体细节需查阅引用的参考文件;脚本运行需 PHP 或 Node.js 环境(视脚本而定)。具体收费、价格、平台支持等信息暂未提供。