评估自定义JavaScript转义函数的XSS安全性
该转义函数存在XSS安全漏洞
这个函数的设计存在多处缺陷,会导致XSS攻击风险,具体问题如下:
1. 危险关键字检测可轻易绕过
- 检测逻辑使用
match("prompt")和match("alert"),这两个方法区分大小写。输入Alert、PROMPT或混合大小写的AlErT等变体,都不会被检测到。 - 可以通过拆分关键字的方式绕过检测,比如输入
al'+'ert(1),转义后的字符串不包含完整的alert,无法被匹配规则捕获。
2. 转义规则不完整
函数仅对<、>、&三个字符进行转义,未处理'、"、/等危险字符:
- 如果后续代码修改,将函数输出用于HTML属性(如
<div title="..."),输入的引号可以突破属性边界,插入onmouseover、onclick等恶意事件脚本。 - 未覆盖Unicode编码、全角字符等其他可能被浏览器解析为特殊符号的场景,扩展使用场景时会暴露风险。
3. 关键字检测时机错误
函数在转义完成后才检测危险关键字,而非原始输入阶段:
- 若输入内容通过实体编码拆分关键字(如
alert),转义后会变成a&#x6C;ert,虽然最终浏览器解析后会显示为alert,但转义后的字符串不包含完整关键字,可绕过检测。
即使当前函数仅用于生成div文本内容,不会直接触发XSS,但这些缺陷会让函数在场景变化或遭遇间接攻击时,完全失去防护能力。
内容的提问来源于stack exchange,提问作者Puzzled
相关产品推荐
相关产品推荐

