本帖最后由 宝塔用户_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+$"
|