实现示例const confusables = new Map<string, string>([ ['а','a'],['е','e'],['і','i'],['ο','o'],['р','p'],['ѕ','s'],['ν','v'] ]) function normalizeName(n: string): string { return n.normalize('NFKC') } function hasNonAscii(n: string): boolean { return /[^\x00-\x7F]/.test(n) } function replaceConfusables(n: string): string { let out = ''; for (const ch of n) out += confusables.get(ch) || ch; return out } function suspicious(n: string): boolean { const norm = normalizeName(n) if (/^@/.test(norm)) return false if (hasNonAscii(norm)) return true const rep = replaceConfusables(norm) return rep !== norm } function allowName(n: string, allow: Set<string>): boolean { if (allow.has(n)) return true return !suspicious(n) } 审计与CI门禁对新包名执行检测;命中混淆阻断并输出近似名称建议。白名单变更需审批与到期;产线默认拒绝未审批项。

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部
2.060677s