在日志中添加 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))'。
记录`用户 ' 将修改这些字段。 验证不变.
内容来源: colinhacks/zod