实现示例type File = { path: string; content: string } const regexes = [ /AKIA[0-9A-Z]{16}/, // AWS Access Key /ghp_[A-Za-z0-9]{36}/, // GitHub Token /AIza[0-9A-Za-z\-_]{35}/, // Google API Key ] function entropy(s: string): number { const freq: Record<string, number> = {} for (const ch of s) freq[ch] = (freq[ch] || 0) + 1 let H = 0 const n = s.length for (const k of Object.keys(freq)) { const p = freq[k] / n; H += -p * Math.log2(p) } return H } function suspicious(s: string, threshold = 4.0): boolean { if (regexes.some(r => r.test(s))) return true return entropy(s) >= threshold && /[A-Za-z0-9+/=]{24,}/.test(s) } function scan(files: File[]): { hits: { path: string; snippet: string }[] } { const hits: { path: string; snippet: string }[] = [] for (const f of files) { const lines = f.content.split(/\r?\n/) for (const ln of lines) if (suspicious(ln)) { hits.push({ path: f.path, snippet: ln.slice(0, 200) }); break } } return { hits } } 审计与运行治理提交前阻断命中项并输出修复建议;允许受控例外并设到期。审计记录包含文件路径与片段摘要;禁止将机密写入日志。

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部
3.562863s