宝塔面板升级 13.0. 0后,Nginx 免费防火墙 8.3 出现 bug 的解决方案
需要修改 /www/server/panel/plugin/free_waf/free_waf_main.py
第 1 步:替换 def get_safe_logs 函数中的 cgi 代码(第 725 行起,共 3 处)import cgi 改为 import htmlcgi.escape(line) 改为 html.escape(line, quote=False) ←★关键,不能漏 quote=Falsecgi.escape(..., True) 改为 html.escape(..., quote=True)(第 768 行,字段防 XSS 转义)
第 2 步:替换 def xssencode 函数中的 cgi 代码(第 202 行起,共 2 处)import cgi 改为 import htmlcgi.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+$"
评论 暂无评论