用途:讲解并防范「编码绕过」这一安全反模式(CWE-838,严重级别高)。核心问题是操作顺序错误——先做安全校验、后做解码或规范化,导致编码后的载荷看似安全,解码后却变为恶意内容,从而绕过 WAF、输入过滤,引发 XSS、SQL 注入和路径遍历。
主要能力:给出反模式原理说明;提供 Python、JavaScript/Node.js、Java、PHP 的漏洞(BAD)与安全(GOOD)对照示例,例如先校验后 unicodedata.normalize、先校验后 URLDecoder.decode、路径检查早于 path.normalize 等;说明常见编码绕过技术(URL 编码 %3c、双重编码 %253c、Unicode 变体 <、HTML 实体 <、\u003c、混合编码、路径遍历 ..%2f);列出各语言的检测信号与 grep 搜索模式;并给出人工与自动化测试方法。
使用方式:在代码生成或审查时,按「先规范化/解码到规范形式,再做安全校验」的顺序检查;SQL 使用参数化查询;对路径和 URL 先做规范化再校验。必要命令与函数名保持原样:unicodedata.normalize('NFKC', username)、decodeURIComponent()、URLDecoder.decode()、path.normalize()。
适用场景:Web 输入校验、文件路径与 URL 处理、模板输出、SQL 查询构造等。
限制:仅为防护指南与示例,未提供具体版本、许可或收费信息;示例不可直接照搬,需结合框架的隐式解码行为调整。