用途:该技能用于在接收用户输入或处理请求数据时,对来自系统边界的所有外部数据进行显式验证,避免直接信任未校验的数据。
主要能力:强调“永不信任输入”的铁律,要求在入口点验证、对无效输入快速失败。需校验类型、格式、范围、必填项,并在必要时清理危险字符。资料给出 Zod、Yup、class-validator 等库的示例,并列出常见输入类型的校验要点,如邮箱校验格式与长度、密码校验长度与复杂度、ID 校验格式与存在性、数字校验类型与范围、字符串校验长度与模式、数组校验长度与元素、对象使用 schema 校验。
使用方式:在边界处使用 schema 校验库,例如资料中的 Zod 示例:const result = createUserSchema.safeParse(req.body); 若失败返回 400 及错误详情,成功后再使用已校验数据。资料还给出 Yup 与 class-validator 的写法示例。
适用场景:处理 HTTP 请求体、参数、请求头;读取文件或环境变量;接收外部 API 数据;任何接收不可信输入的函数。
限制与注意事项:资料明确反对“前端已校验”“内部 API”“信任来源”“只是简单字段”等理由,认为前端校验只服务体验,后端校验才关乎安全;内部服务也可能有缺陷;外部来源可能出错、被攻破或改变格式;简单字段也可能引发复杂问题。TypeScript 类型在运行时消失,不能替代运行时校验。资料未提供具体安装命令、版本要求或性能数据。