CVE-2026-46361phpMyFAQ 4.1.2之前的版本中存在存储型跨站脚本(XSS)漏洞。该漏洞源于search.twig模板使用了raw过滤器渲染用户输入,导致自动转义保护失效。拥有FAQ编辑器权限的攻击者可以注入经过HTML实体编码的恶意载荷,绕过后端SearchController.php中的安全过滤机制。当其他用户(包括管理员)访问搜索结果时,恶意JavaScript代码将在其浏览器中执行,可能导致会话劫持或权限提升。
该漏洞的根本原因在于Twig模板引擎的不安全配置以及后端过滤逻辑的缺陷。在`search.twig`文件中,渲染搜索结果时对`result.question`和`result.answerPreview`变量使用了`|raw`过滤器,这完全关闭了HTML自动转义机制。虽然后端`SearchController.php`尝试使用`strip_tags()`清理输入,但攻击者可以通过发送HTML实体编码的Payload(如`<img src=x onerror=alert(1)>`)来绕过。由于`strip_tags()`通常不会移除实体编码的尖括号,这些字符被保留。经过后端的`html_entity_decode`处理后,实体字符还原为实际的HTML标签。当数据传送到前端并经过`|raw`过滤器渲染时,浏览器将其解析为可执行的JavaScript代码。攻击者只需具备FAQ编辑权限,即可将恶意代码存入数据库,在管理员或其他用户搜索时触发,进而窃取会话凭证。