#6591·zod

在日志中添加 z.secret() / z.secretString() 以修改敏感解析值

作者: egomezsalasva创建于 2026年9月11日更新于 2026年9月15日

最好能从日志和追踪出错的地方 保护敏感区域 为此,我提议增加z.secret ()'并可能增加z.secretString ()'。 这些值会得到Zod验证,但会添加一个保护层,这样它们不会直接出现在日志中.

分析失败时, Zod 已经从问题中省略了原始值, 除非您通过“ 输入报告: 真实” 。 当解析成功时,值是正常的字符串,因此`console.log'、'councle.log'、'JSON.stringify'仍然打印出来。

const 登录 = z.object ({) 电子邮件:z.email (,), 密码:z.string (,), 客户端PII:z.object({) 护照号码:z.string (,), 地址:z.string(,), ~ , , ( ) ,

  • ;

Const 用户 = 登录.parse ({ 电子邮件:"[email protected]", 密码:"秘密口令", 客户端PII : { 护照号码: "敏感护照号码", 地址: "敏感客户定位", {\fn华文楷体\fs16\1cHE0E0E0}

  • ;

控制台.log(用户);


`console.log(用户)'指出`密码 ' 和整个`客户PII ' 物体。 想法是标出这些领域:


const 登录 = z.object ({)
电子邮件:z.email (,),
密码:z.secretString (,),
客户端PII:z.secret(
z.object ({) (中文(简体) ).
护照号码:z.string (,),
地址:z.string(,),
~ , , ( ) ,
, (中文(简体) ).
* ;

z.secretString ()'是z.secret (z.string ())'的缩写;z.secret () ' 包罗任何计划,这样它可以覆盖像客户PII'这样的被窝物体。 对内部方案进行额外检查,例如`z.secret(z.string (.min(8))'。

记录`用户 ' 将修改这些字段。 验证不变.