Files
ElyOffice/tasks/reviews/C18.2-r2.md
T

2.4 KiB

FAIL

crates/ely-pdf-engine/src/bin/ely-pdf-worker/main.rs:463 — 失败日志仍将未经内容审核的错误串交给 scrubbed;该函数仅遮盖成对引号中的字符,未加引号的数据和字段内的引号都会泄露。具体复现:对独立构建的真实 worker 调用 change_link,地址为 ftp://ana:ZqxPrivate42@files.example/document,请求被拒绝后,应用日志记录 only web and mail addresses: ftp://ana:ZqxPrivate42@files.example/document,包含凭据。正常打开文件的路径也可触发:PDF 的 /Encrypt /Filter 为 /Zqx#27Private42 时,OPEN 返回 unknown encryption handler: 'Zqx'Private42',日志中的遮盖结果为 '…'Private42'…,保留输入文档的字段片段。证据:/tmp/ely-c18-2-r2/pdf-link-probe.log、pdf-encrypt-quote-probe.log;副本中改为仅记录请求号与失败事件后,两种泄露探针通过,完整错误仍由 ERR 回复交回。修复方向:为失败日志限定经过审核的错误类别及诊断字段,保留现有用户错误通道;增加真实 worker 的无引号敏感字段和内嵌引号回归。

crates/ely-platform/src/diagnostics.rs:105 — 按空白拆词后逐词判定路径,使带空格的文件名尾部进入默认诊断导出,路径移除功能仍泄露路径信息。具体复现:日志含 opened '/Volumes/ClientSecret/Tax Salary Report.pdf' 或 Windows 路径 C:\Clients\Tax Salary Report.pdf,调用 bundle(..., Some(&Redact::default())) 后分别得到 opened '<path> Salary Report.pdf' 和 saved <path> Salary Report.pdf。补充断言两种路径的文件名都应被移除,实测失败;现有脱敏测试通过。证据:/tmp/ely-c18-2-r2/redact-probes.log。修复方向:识别完整路径范围,覆盖引号、空格和 Windows 路径形式,再替换整个路径;为含空格的真实日志及崩溃报告路径加入回归。

crates/ely-platform/src/diagnostics.rs:111 — 姓名过滤条件 name.chars().count() > 1 丢弃所有单字姓名,默认开启的个人姓名移除功能原样导出这些名字。具体复现:作者名设为 李,使用 Redact { names: vec!["李".into()] } 脱敏 author: 李,结果仍为 author: 李。补充断言实测失败;副本中允许全部非空姓名参与替换后通过。证据:/tmp/ely-c18-2-r2/redact-probes.log、name-repair.log。修复方向:对全部非空配置姓名执行脱敏,并覆盖单字中文姓名及单字署名。