缺陷 / 高 / 后端服务
electron/services/audit.service.ts
AuditService.computeHash 用于去重:
const hash = crypto.createHash('sha256').update(JSON.stringify(obj)).digest('hex');
但 JSON.stringify 对对象 key 顺序敏感:
JSON.stringify
{a: 1, b: 2}
{"a":1,"b":2}
{b: 2, a: 1}
{"b":2,"a":1}
相同语义的对象因 key 顺序不同产生不同 hash,去重失败。
function stableStringify(obj: unknown): string { if (obj === null || typeof obj !== 'object') return JSON.stringify(obj); if (Array.isArray(obj)) { return '[' + obj.map(stableStringify).join(',') + ']'; } const keys = Object.keys(obj).sort(); return '{' + keys.map(k => JSON.stringify(k) + ':' + stableStringify(obj[k])).join(',') + '}'; } const hash = crypto.createHash('sha256').update(stableStringify(obj)).digest('hex');
或使用 fast-json-stable-stringify 库(符合开发规范"优先使用第三方成熟库")。
No dependencies set.
The note is not visible to the blocked user.
问题类型
缺陷 / 高 / 后端服务
文件位置
electron/services/audit.service.ts问题描述
AuditService.computeHash 用于去重:
但
JSON.stringify对对象 key 顺序敏感:{a: 1, b: 2}->{"a":1,"b":2}{b: 2, a: 1}->{"b":2,"a":1}相同语义的对象因 key 顺序不同产生不同 hash,去重失败。
影响
建议修复
或使用 fast-json-stable-stringify 库(符合开发规范"优先使用第三方成熟库")。