用途:该技能面向 Unicode 安全反模式(CWE-176,严重度中等),在编写或审查涉及用户名、文本显示、输入校验的代码时使用,帮助识别并规避因 Unicode 字符表示变体引发的安全问题。
主要能力:覆盖四类风险——同形字(不同书写系统中外观相同的字符,如拉丁 a 与西里尔 а)、规范化问题(同一字符存在多种字节序列,如预组合形式与基字符加组合重音)、零宽字符(不可见字符隐藏内容或改变字符串长度)、双向文本覆盖(控制字符重排显示,如把 exe.pdf 伪装成 fdp.exe)。技能给出反模式与安全写法的对照示例,并提供检测与预防清单。
使用方式:审查字符串比较,重点关注用户可控字符串在认证、授权、访问控制中的比较;检查输入从接收到存储、显示的全流程是否一致应用规范化;用同形字测试注册 admin、root 或知名品牌名;用零宽字符测试长度校验与字符串比较是否被绕过。预防措施包括:统一规范化为 NFC 后再校验、存储、比较;剥离零宽空格(\u200B)、双向覆盖(\u202E)等非打印字符;对关键标识符做同形字检测(骨架形式或 confusables 数据库);限制字符集(敏感标识符优先 ASCII 字母数字);在输入、存储、比较、显示各环节保持一致处理。国际域名可考虑 Punycode 以让冒充更易被察觉。
适用场景:用户注册与登录、权限判断、域名与品牌名展示、任何依赖字符串相等性的安全决策。
限制:资料未提供具体依赖库、安装命令或可直接运行的完整实现;同形字检测的具体算法与库需按实际环境选择。相关参考包括 OWASP Top 10 A05:2025、OWASP GenAI LLM05:2025、OWASP API8:2023、CWE-176、CAPEC-71 及 Unicode 安全考量与 Confusables 资料。