解决宝塔 Nginx 免费防火墙误拦截“含代码内容” 添加 URL 白名单最有效

社区话题 wordpress开发 解决宝塔 Nginx 免费防火墙误拦截“含代码内容” 添加 URL 白名单最有效

  • 该话题包含 0 个回复、1 个参与人,并且最后由 追光1个月 前 更新。
正在查看 0 条回复
  • 作者
    帖子
    • #1083

      追光
      管理员

      主题:宝塔面板 · Nginx防火墙 · 误拦截 · URL白名单 · 代码发布被拦截
      日期:2025年9月13日

      ?️ 问题背景

      最近在自己的博客后台发布技术文章时,频繁遇到“403 Forbidden”或“连接被重置(444)”的问题。尤其是当文章中包含 HTML、JavaScript、SQL 示例代码时 比如:

      html

      alert(\'hello\');

      sql
      SELECT  FROM users WHERE id = 1;

      宝塔的“Nginx免费防火墙”就会拦截,提示:

      “检测到攻击行为,已拦截”

      查看防火墙日志,发现是被 POST过滤 或 GET-参数过滤 规则命中,误判为 XSS 或 SQL 注入攻击。

      这严重影响了正常内容发布流程,尤其是技术类站点,代码是刚需!


      ? 尝试过的无效方案

      ❌ 关闭 POST 过滤 → 虽然能发,但整站失去防护,不安全
      ❌ 修改 User-Agent → 无济于事,规则不依赖 UA
      ❌ 关闭 from-data 协议 → 官方提示“不建议关闭”,且关闭后仍可能被其他规则拦截


      ✅ 最佳解决方案:添加 URL 白名单

      经过测试和官方文档验证,URL 白名单 是最安全、最精准、副作用最小的解决方案!

      ✅ 原理:防火墙对白名单中的 URL 路径跳过大部分检测规则(如POST/GET/UA过滤),但仍保留IP黑名单、CC防御等基础防护。

      ?️ 操作步骤(图文逻辑版)

      第一步:定位你的发布接口 URL

      在浏览器中打开你的发布页面,查看地址栏。例如:

      WordPress:https://yoursite.com/wp-admin/post.php
      Typecho:https://yoursite.com/admin/write-post.php
      自研系统:https://yoursite.com/api/article/publish

      ? 记下这个路径,比如:/wp-admin/post.php

      第二步:进入宝塔面板 → Nginx 防火墙 → URL白名单

      路径
      宝塔面板 → 安全 → Nginx防火墙 → URL白名单 → 点击“设置”

      第三步:添加url白名单规则

      在输入框中,填写你的发布页路径:

      /wp-admin/post.php

      ✅ 支持通配符:
      /wp-admin/ → 整个后台目录放行
      /publish → 所有含 publish 的接口放行
      /api/article/ → API 文章相关接口放行

      ⚠️ 注意:不要添加根路径 /,否则等于关闭全站防护!

      第四步:保存 & 测试

      点击“保存”,然后:

      1. 回到你的发布页面
      2. 再次尝试提交含 、SELECT、eval() 的内容
      3. ✅ 成功发布!不再拦截!


      ? 附:我的白名单配置参考(WordPress)

      /wp-admin/post.php
      /wp-admin/post-new.php
      /wp-admin/admin-ajax.php
      
      bbpress
      
      /forum/*
      /topic/*
      /wp-admin/admin-ajax.php

      如果你也在被这个问题困扰,欢迎留言交流!

正在查看 0 条回复
  • 在下方一键注册,登录后就可以回复啦。