• freepayzz
    ModSecurity 防火墙
    ID modsecurity版本 1.3.3插件制作者 freepayzz免费1354 行 / 109.9 KBHook / 路由 / 后台页
    应用层 Web 应用防火墙(WAF),内置 OWASP ModSecurity 核心规则集,支持异常评分、检测/拦截模式、自动 IP 封禁、可信代理配置、资源限制与脱敏日志审计;另提供可独立启停的网站访问速度优化(匿名公开页缓存与图片懒加载)和浏览器缓存优化(内容变更自动失效)。
    app/plugins/modsecurity/plugin.php
    开发日志已有 2 条

    个人独立维护项目。

    • freepayzz
      freepayzz
      版本 1.3.3 b623952f76a4 更新:修复适应最新程序,完善防御功能release
    • freepayzz
      freepayzz
      版本 1.3.0 3f84b5c16d27 更新:旧格式迁移:已将插件代码转存到开发日志,主题正文改为基础介绍。
    主楼
  • 质量报告

    插件质量报告

    插件:modsecurity

    Hook功能范围循环使用频率文件读写修改系统表读写系统表读写自己的表
    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

    字段类型可空默认值约束
    idid否-主键、自增
    request_idstring否--
    rule_iduint否--
    msgstring否--
    severitystring否--
    categorystring否--
    matchedtext否--
    targetstring否--
    uritext否--
    methodstring否--
    ipkey否--
    user_iduint否0-
    blockeduint否0-
    created_atuint否--

    plugin_modsecurity_bans

    字段类型可空默认值约束
    idid否-主键、自增
    ipkey否-唯一
    reasonstring否--
    hitsuint否0-
    created_atuint否--
    expires_atuint否0-

    plugin_modsecurity_cc

    字段类型可空默认值约束
    ipkey否-主键
    window_starteduint否--
    hitsuint否0-
    updated_atuint否--
    #1
  • freepayzz

    哈哈 一般般,

    #3
  • bbs1org

    @freepayzz 这插件代码量都赶上项目的代码量了

    #2
  • bbs1org

    插件有bug

    #5
  • glod
    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=view

    debug模式日志里面一直会有preg_match正则报错你看下

    #4
  • freepayzz

    修复了,还有啥BUG和功能不足地方发出来,持续继续优化改进

    #6
  • 350

    🔍 插件审查报告(对照《AI 开发规则》与开发者文档)

    🔒 安全问题

    未发现直接的注入/越权漏洞。所有 POST 写操作经全局 CSRF 与 need_admin() 保护,SQL 均参数化,日志对 COOKIES/HEADERS 命中内容做脱敏,封禁/解封走 upsert。整体安全设计良好。

    ⚡ 性能问题

    未发现明显问题。app.boot 每请求仅一次 IP 封禁查询(CC 默认关闭),规则集静态缓存,事件批量预编译插入。

    🐛 功能/规范缺陷

    1. plugin.php:1219 调用 admin_search_like($q),核心只有 search_like_pattern(),该函数不存在。管理员在事件日志里搜索会触发致命错误,并导致整个防火墙被自动停用(等于关闭 WAF)。请改用 search_like_pattern($q)。
    2. plugin.php:1336-1337 注册了 topic.after_delete/reply.after_delete,但核心删除流程只触发 topic.before_delete/content.before_delete。删除主题/回复后缓存版本不更新,匿名页面缓存会在 TTL 内继续返回已删除内容。请改挂真实存在的 content.before_delete。
    3. modsecurity_page_head 以内联 <script> 注入懒加载与 Service Worker 脚本(plugin.php:177-181),应移入 manifest assets。
    4. Cache Storage 名 bbs1org-cache-(plugin.php:170)未加插件前缀,建议改为 modsecurity-cache-。
    5. 多处字号写死(26px/15px/14px/20px/11px/12px,plugin.php:809、1120、1188、1319),应改用 var(--font-size-*)。

    ✅ 修复优先级

    先修 admin_search_like 未定义函数(会导致 WAF 停用)→ 修正删除缓存失效钩子 → 内联脚本与缓存名规范 → 字号变量。

    #7
  • freepayzz

    旧格式迁移:已将插件代码转存到开发日志,主题正文改为基础介绍。

    #8
  • zaiwai

    新版本系统可以正常使用吗。

    #9
  • freepayzz

    可以

    #10
  • freepayzz

    版本 1.3.3 更新:
    修复适应最新程序,完善防御功能

    #11

发表回复

登录后回复