当前位置:论坛首页 > Linux面板 > 讨论

宝塔面板升级13.0.0后,Nginx免费防火墙8.3出现bug的解决方案

发表在 Linux面板2026-8-17 11:50 [复制链接] 0 299

本帖最后由 宝塔用户_iqmahf 于 2026-8-18 15:04 编辑

需要修改/www/server/panel/plugin/free_waf/free_waf_main.py

第 1 步:替换 def get_safe_logs 函数中的 cgi 代码(第 725 行起,共 3 处)
  • import cgi 改为 import html
  • cgi.escape(line) 改为 html.escape(line, quote=False) ←★关键,不能漏 quote=False
  • cgi.escape(..., True) 改为 html.escape(..., quote=True)(第 768 行,字段防 XSS 转义)

第 2 步:替换 def xssencode 函数中的 cgi 代码(第 202 行起,共 2 处)
  • import cgi 改为 import html
  • cgi.escape 改为 html.escape(第 211 行,完整写法:html.escape(str_convert, quote=True))

第 3 步:第 747 行 bytes 比较
== "\n" -> == b"\n"(二进制模式读出来的是 bytes,和 str 比较永远不相等)

第 4 步:第 76、82、87 行三个正则加 r 前缀、点号转义(\d 在非原始字符串里属无效转义序列,Python 3.12+ 每次加载都报 SyntaxWarning,未来版本会变语法错误)
  • "\d+.\d+.\d+.\d+-\d+.\d+.\d+.\d+$" -> r"\d+\.\d+\.\d+\.\d+-\d+\.\d+\.\d+\.\d+$"
  • "\d+.\d+.\d+.\d+/\d+$" -> r"\d+\.\d+\.\d+\.\d+/\d+$"
  • "\d+.\d+.\d+.\d+$" -> r"\d+\.\d+\.\d+\.\d+$"

使用道具 举报 只看该作者 回复
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

紧急运维服务

响应时间:3分钟

问题处理方式:宝塔专家1对1服务

工作时间:工作日:9:00 - 18:30

宝塔专业团队为您解决服务器疑难问题

点击联系技术分析

工作时间:09:00至18:30

快速回复 返回顶部 返回列表