MADEVAL/BotBlocker-Add-on-Developer-Kit

GitHub: MADEVAL/BotBlocker-Add-on-Developer-Kit

BotBlocker Security 插件的第三方扩展开发工具包,提供 API 文档、代码模板、验证工具和 AI 辅助生成能力,帮助开发者规范地构建并打包安全防护扩展。

Stars: 8 | Forks: 1

# BotBlocker Add-on 开发工具包 ![BotBlocker Security 横幅](https://ps.w.org/botblocker-security/assets/banner-1544x500.png?rev=3405280) 本存储库是用于为 BotBlocker Security 构建第三方 add-on 的工作手册、模板、验证器和 AI 指令包。 BotBlocker Security 是一个 WordPress 防 bot 防火墙及主动防护插件。它通过请求检查、规则、CAPTCHA、日志、早期初始化保护以及基于 add-on 的扩展,来保护登录流程、XML-RPC、REST、评论、文件请求、支付回调和高风险流量。 ## 基准要求 - BotBlocker Security: `1.6.20+` - WordPress: `5.0+`,已测试至 `7.0` - PHP: `7.4+` - Add-on 格式: Add-on API v2,包含 `bbcs-addon.json` `1.6.20` 是支持 Add-on API v2 系统所需的最低 BotBlocker 版本。新的第三方 add-on 应将目标设定为 `1.6.20+`。 ## 内容概览 - `examples/acme-botblocker-sample`: 用于常规后期加载行为的规范 v2 示例 add-on。 - `examples/acme-traffic-guard`: 用于预运行 `traffic_decision_provider` 合约的高级 v2 示例 add-on。 - `docs/botblocker-runtime-contract.md`: BotBlocker 如何扫描、安装、激活和加载 add-on。 - `docs/addon-api-v2.md`: manifest、设置、生命周期、功能提供者 (feature providers) 及资产。 - `docs/botblocker-core-object.md`: 如何在 add-on 中安全读取实时的 `BotBlocker` 对象。 - `docs/botblocker-request-data.md`: BotBlocker 对象上可用的访客/请求/决策/浏览器数据映射。 - `docs/botblocker-settings-reference.md`: 用于只读 add-on 决策的 BotBlocker 核心设置参考。 - `docs/traffic-and-redirect-addons.md`: 面向流量管理器、重定向管理器和路由器的实用指南。 - `docs/core-hook-integration.md`: 必须在 BotBlocker 检查周期内运行的 add-on 的必需核心 hook 合约。 - `docs/settings-contract.md`: 第三方 v2 add-on 的确切设置保存合约。 - `docs/settings-ui-patterns.md`: BotBlocker 设置选项卡布局、帮助区块、字段类和字段示例。 - `docs/lifecycle-and-features.md`: 生命周期回调与功能提供者规则。 - `docs/code-quality-standard.md`: 必需的安全和代码质量标准。 - `docs/packaging-and-upload.md`: ZIP 结构、上传流程、常见上传错误。 - `docs/testing.md`: 静态、包、WordPress、生命周期、资产、multisite 及安全测试。 - `docs/compatibility-matrix.md`: 工具包/核心/运行时的兼容性对比。 - `docs/known-core-contract-gaps.md`: 需要在 BotBlocker 核心中验证或修复的已知实现缺口。 - `tools/validate-addon.php`: 用于文件夹和 ZIP 包的静态验证器。 - `tools/package-addon.ps1`: 用于构建正确的单根文件夹 ZIP 的 PowerShell 打包器。 - `ai/botblocker-addon-skill/SKILL.md`: 用于创建/审查 add-on 的 AI 指令。 ## 关键运行时模型 BotBlocker 不会从此存储库或您的源文件夹中直接加载第三方 add-on。它们只能在上传并安装后,从 WordPress 的 uploads 运行时目录中运行。 实际的运行时流程为: 1. 开发者构建一个以该 add-on slug 命名的源文件夹。 2. 开发者创建一个仅包含该唯一根文件夹的 ZIP。 3. 管理员在 `BotBlocker -> Add-ons` 中上传该 ZIP。 4. BotBlocker 验证该 ZIP 并将其安装到 `wp-content/uploads/botblocker/addons/{slug}`。 5. 在管理员激活之前,该 add-on 将保持非活跃状态。 6. 活跃且兼容的 add-on 将从运行时 uploads 目录中加载。 在编写代码之前,请先阅读 `docs/botblocker-runtime-contract.md`。 重要的时序说明:常规的活跃 v2 add-on 仍然会在主 BotBlocker 请求检查运行**之后**才被引入。流量 add-on 只有在明确选择加入 `docs/core-hook-integration.md` 中描述的预运行 (pre-run) 合约时,才能参与请求周期内部:manifest 的 `features` 必须包含 `traffic_decision_provider`,manifest 的 `runtime.pre_run` 必须指定一个安全的预运行文件,并且该文件必须暴露已声明的就绪标记 (readiness marker) 和注册回调 (registration callback)。 ## 关键流量控制警告 流量管理类 add-on 属于高风险的安全和运维代码。一条错误的规则可能会重定向真实访客、中断结账/支付回调、阻断支持/管理员工作流、隐藏 BotBlocker 的验证或拒绝页面、引发重定向循环,或削弱 BotBlocker 的保护能力。 仅当常规的检查后 WordPress hook 无法解决问题时,才应使用 `traffic_decision_provider`。发布流量 add-on 时应将其默认禁用,首先保持启用 `dry_run`,在 staging 环境下进行测试,记录回滚步骤,并且在生产环境的重定向、拦截、绕过或 CAPTCHA 决策被启用之前,必须要求管理员进行明确审查。 ## 新 Add-on 的快速路径 1. 将 `examples/acme-botblocker-sample` 复制到一个以您最终的 slug 命名的新文件夹中。 2. 重命名文件夹、manifest `slug`、根 PHP 文件、text domain、PHP 函数前缀、option 名称、句柄、CSS 类以及 JS 全局变量。 3. 在 `inc/core.php` 中定义行为。 4. 在 `inc/settings.php` 中定义管理员控件。 5. 在 `settings.option` 下声明每个设置字段,例如 `vendor_addon_settings[enabled]`。 6. 实现 manifest 中声明的 sanitizer。 7. 如果该 add-on 需要访客/请求数据,请阅读 `docs/botblocker-core-object.md` 和 `docs/botblocker-request-data.md`。 8. 如果该 add-on 执行重定向或管理流量,请阅读 `docs/traffic-and-redirect-addons.md`,检查 `examples/acme-traffic-guard`,并选择使用检查后的 WordPress hook 或更严格的预运行流量决策提供者 (pre-run traffic decision provider) 合约。 9. 仅在需要时实现生命周期回调。 10. 验证源文件夹。 11. 进行打包。 12. 验证 ZIP。 13. 通过 BotBlocker 管理后端上传并运行手动测试。 ## 验证 从此工具包的根目录运行: ``` php .\tools\validate-addon.php .\examples\acme-botblocker-sample php .\tools\validate-addon.php .\examples\acme-traffic-guard ``` 验证 ZIP: ``` php .\tools\validate-addon.php .\dist\acme-botblocker-sample.zip ``` ## 打包 PowerShell: ``` .\tools\package-addon.ps1 -AddonPath .\examples\acme-botblocker-sample -DestinationPath .\dist\acme-botblocker-sample.zip .\tools\package-addon.ps1 -AddonPath .\examples\acme-traffic-guard -DestinationPath .\dist\acme-traffic-guard.zip ``` 手动等效操作: ``` Compress-Archive -Path .\acme-botblocker-sample -DestinationPath .\acme-botblocker-sample.zip -Force ``` 请从包含该 add-on 文件夹的目录中运行手动打包命令。压缩该文件夹本身,而不是其中的文件。 正确的 ZIP: ``` acme-botblocker-sample.zip acme-botblocker-sample/ bbcs-addon.json acme-botblocker-sample.php inc/core.php inc/settings.php assets/icon.svg readme.txt ``` 错误的 ZIP: ``` acme-botblocker-sample.zip bbcs-addon.json inc/core.php ``` ## 最小 Manifest ``` { "schema": "2.0", "slug": "vendor-addon", "name": "Vendor Add-on", "version": "1.0.0", "requires_core": "1.6.20", "requires_php": "7.4", "author": "Vendor", "description": "Adds a focused BotBlocker extension with configurable runtime behavior.", "main": "vendor-addon.php", "core": "inc/core.php", "settings": { "view": "inc/settings.php", "option": "vendor_addon_settings", "sanitize": "vendor_addon_sanitize_settings" }, "lifecycle": { "activate": "vendor_addon_activate", "delete": "vendor_addon_delete" }, "features": [ "vendor_feature_provider" ], "assets": { "icon": "assets/icon.svg", "readme": "readme.txt" } } ``` 必填字段: - `schema` - `slug` - `name` - `version` - `requires_core` - `core` 针对常规 add-on 的质量必填字段: - `requires_php` - `author` - `description` - `main` - 存在管理员 UI 时的 `settings.view` - 保存设置时的 `settings.option` - 保存设置时的 `settings.sanitize` - `assets.icon` - `assets.readme` ## 设置合约 第三方 v2 设置必须使用 manifest 的 option 数组: ``` ``` 请勿复制 BotBlocker 内置的普通字段设置,例如: ``` ``` 这些字段之所以有效,仅仅是因为 BotBlocker 核心为其自身内置选项硬编码了内部保存逻辑。第三方 add-on 是通过 `BotBlockerAddons::saveSettingsFromPost()` 借由 `settings.option` 保存的。 ## 设置 UI 模式 `settings.view` 会作为 add-on 选项卡渲染在 `BotBlocker -> Tools` 内部。它应该以 BotBlocker 样式的帮助区块开始,然后渲染分组控件。 请使用此布局: ```


``` 常见的 BotBlocker 字段包装器: - `bbcs_checkbox_input`, `bbcs_label_checkbox_box`, `bbcs_label_input_checkbox` 用于复选框。 - `bbcs_text_input`, `bbcs_label_input_box`, `bbcs-label-input`, `bbcs_text_input_inner`, `bbcs_text_input_input` 用于文本、URL 和数字字段。 - `bbcs_textarea_input`, `bbcs_textarea_input_inner`, `bbcs_textarea_input_input` 用于 textarea 字段。 - `bbcs_select_input`, `bbcs_select_input_inner`, `bbcs_select_input_select` 用于 select 字段。 复选框示例: ```
>
``` 文本字段示例: ```
``` Textarea 和 select 的示例请参见 `docs/settings-ui-patterns.md`。 ## 资产 已上传的 add-on 存在于 BotBlocker 插件源目录之外。请勿使用 `plugin_dir_url()` 来加载包内资产。 请使用: ``` function vendor_addon_asset_url( string $relative ): string { return class_exists( 'BotBlockerAddons' ) ? BotBlockerAddons::fileUrl( 'vendor-addon', $relative ) : ''; } ``` 服务器注意事项:BotBlocker 会将运行时包安装到一个受保护的 uploads 目录中。请务必在真实的 WordPress 安装中测试每个 icon/JS/CSS 的 URL,并确认返回 HTTP 200 状态码。详见 `docs/known-core-contract-gaps.md`。 ## 代码质量门禁 一个 add-on 只有在通过以下所有项后,才算开发完成: - 独特的 slug 和前缀 - 有效的 manifest - 有效的单根文件夹 ZIP - PHP 语法检查 (lint) - 验证器 - 经过转义的设置视图输出 - 显式的设置 sanitizer - 幂等的生命周期回调 - 不对运行时资产使用 `plugin_dir_url()` - 没有未添加前缀的全局变量 - 没有不安全的 superglobal 用法 - 不写入 BotBlocker 插件源目录 - WordPress 上传/激活/保存/停用/删除测试 - 使用静态资产时的资产 HTTP 200 测试 完整检查清单请阅读 `docs/code-quality-standard.md` 和 `docs/testing.md`。 ## 参考 Add-on 请将 `examples/acme-botblocker-sample` 作为标准的常规 add-on 模板。 仅当高级流量管理 add-on 必须参与 BotBlocker 请求周期内部时,才使用 `examples/acme-traffic-guard`。它演示了: - manifest `features: ["traffic_manager", "traffic_decision_provider"]` - manifest `runtime.pre_run` - 独立的 `inc/pre-run.php` - 就绪标记 (readiness marker) 和提供者注册回调 - dry-run 的 `log_only` 决策 - 受保护的 `redirect` 决策 - 位于 `settings.option` 下的 BotBlocker Tools 设置 - 包含哈希 IP 值的近期匹配日志记录 这两个工具包示例是第三方规范的参考。请直接复制并调整它们,而不要参考任何其他 add-on 源码。 ## 官方链接 - WordPress.org 插件页面: https://wordpress.org/plugins/botblocker-security/ - 产品网站: https://botblocker.top/products/ - 文档: https://botblocker.top/docs/ - 支持: https://botblocker.top/contacts/ - 社区: https://botblocker.top/community/ - 更新日志: https://botblocker.top/changelog/ - 开发者工作室: https://globus.studio/ - 架构与代码: https://leonidov.dev/ 截图、横幅、图标和公开链接请参见 `docs/links-and-assets.md`。 ## 完成标准 开发者或 AI 可以使用此工具包来创建 v2 add-on,对其进行验证、打包、通过 BotBlocker 管理后端上传、激活、查看其 Add-ons 卡片和 Tools 选项卡、保存设置、观察运行时行为、停用、删除并重新安装,且全程不会发生致命错误、PHP 警告、手动修改 BotBlocker 核心代码,或依赖未公开的假设前提。
标签:AI合规, API扩展, AppImage, ffuf, Homebrew安装, OpenVAS, PHP, WAF, Web应用防火墙, WordPress插件, 反机器人, 插件开发包, 文件完整性监控