- ModSecurity 防火墙ID modsecurity版本 1.3.3插件制作者 freepayzz免费1354 行 / 109.9 KBHook / 路由 / 后台页应用层 Web 应用防火墙(WAF),内置 OWASP ModSecurity 核心规则集,支持异常评分、检测/拦截模式、自动 IP 封禁、可信代理配置、资源限制与脱敏日志审计;另提供可独立启停的网站访问速度优化(匿名公开页缓存与图片懒加载)和浏览器缓存优化(内容变更自动失效)。app/plugins/modsecurity/plugin.php开发日志已有 2 条
个人独立维护项目。
主楼 插件质量报告
插件:
modsecurityHook 功能范围 循环 使用频率 文件读写 修改系统表 读写系统表 读写自己的表 app.boot 全站请求启动 回调内 5 读写 修正❗️ - - 写 plugin_modsecurity_bans, plugin_modsecurity_events, plugin_modsecurity_cc page.head 全站页面 head 否 5 - - - - reply.after_save 回帖保存后 回调内 3 读写 修正❗️ - - - topic.after_save 主题保存后 回调内 3 读写 修正❗️ - - - content.before_delete 内容删除操作 回调内 2 读写 修正❗️ - - - 颜色说明:黄色表示有数据读写,红色表示 Hook 在系统循环中执行,浅蓝色表示有文件写入。“列表跳过”表示回调在列表路径会提前返回,“回调内”表示操作位于回调自身或其帮助函数的循环体内。“文件批处理”表示逐个处理用户一次提交的文件,属于必要操作,不标记修正。只有操作实际处于需要优化的循环路径时,才会标记“修正❗️”。
数据字典
plugin_modsecurity_events字段 类型 可空 默认值 约束 id id 否 - 主键、自增 request_id string 否 - - rule_id uint 否 - - msg string 否 - - severity string 否 - - category string 否 - - matched text 否 - - target string 否 - - uri text 否 - - method string 否 - - ip key 否 - - user_id uint 否 0 - blocked uint 否 0 - created_at uint 否 - - plugin_modsecurity_bans字段 类型 可空 默认值 约束 id id 否 - 主键、自增 ip key 否 - 唯一 reason string 否 - - hits uint 否 0 - created_at uint 否 - - expires_at uint 否 0 - plugin_modsecurity_cc字段 类型 可空 默认值 约束 ip key 否 - 主键 window_started uint 否 - - hits uint 否 0 - updated_at uint 否 - - @freepayzz 这插件代码量都赶上项目的代码量了
PHP error [2] preg_match(): Compilation failed: PCRE2 does not support \F, \L, \l, \N{name}, \U, or \u at offset 18 D:\Tools\EServer\core\www\localhost\app\plugins\modsecurity\plugin.php:407 GET /index.php?a=admin&tab=settings&debug_log=viewdebug模式日志里面一直会有preg_match正则报错你看下
修复了,还有啥BUG和功能不足地方发出来,持续继续优化改进
🔍 插件审查报告(对照《AI 开发规则》与开发者文档)
🔒 安全问题
未发现直接的注入/越权漏洞。所有 POST 写操作经全局 CSRF 与
need_admin()保护,SQL 均参数化,日志对 COOKIES/HEADERS 命中内容做脱敏,封禁/解封走 upsert。整体安全设计良好。⚡ 性能问题
未发现明显问题。
app.boot每请求仅一次 IP 封禁查询(CC 默认关闭),规则集静态缓存,事件批量预编译插入。🐛 功能/规范缺陷
plugin.php:1219调用admin_search_like($q),核心只有search_like_pattern(),该函数不存在。管理员在事件日志里搜索会触发致命错误,并导致整个防火墙被自动停用(等于关闭 WAF)。请改用search_like_pattern($q)。plugin.php:1336-1337注册了topic.after_delete/reply.after_delete,但核心删除流程只触发topic.before_delete/content.before_delete。删除主题/回复后缓存版本不更新,匿名页面缓存会在 TTL 内继续返回已删除内容。请改挂真实存在的content.before_delete。modsecurity_page_head以内联<script>注入懒加载与 Service Worker 脚本(plugin.php:177-181),应移入 manifest assets。- Cache Storage 名
bbs1org-cache-(plugin.php:170)未加插件前缀,建议改为modsecurity-cache-。 - 多处字号写死(26px/15px/14px/20px/11px/12px,plugin.php:809、1120、1188、1319),应改用
var(--font-size-*)。
✅ 修复优先级
先修
admin_search_like未定义函数(会导致 WAF 停用)→ 修正删除缓存失效钩子 → 内联脚本与缓存名规范 → 字号变量。旧格式迁移:已将插件代码转存到开发日志,主题正文改为基础介绍。
新版本系统可以正常使用吗。
版本 1.3.3 更新:
修复适应最新程序,完善防御功能