用途:防范“过度数据暴露”反模式,即 API 返回超过客户端功能所需的数据。当端点直接序列化原始数据库对象或模型类而不筛选敏感字段时,攻击者可拦截响应获取 PII、凭证和内部系统细节,即使前端 UI 已隐藏这些数据。适用场景为生成或审查 API 响应、数据库查询、数据序列化逻辑。
主要能力:提供坏/好代码对照(如 Python/Flask 返回整个 User 对象对比使用 DTO 仅暴露 id、username),并给出多语言实现要点:NestJS 用 class-transformer 与 @Expose、Spring Boot 用 @JsonView、ASP.NET Core 用 DTO 手动映射。检测方法包括用 Burp Suite 或 OWASP ZAP 拦截 API 调用、排查 SELECT *、检查通用 toJSON()/serialize() 是否无过滤导出全部属性。
预防要点:为每个 API 响应使用字段白名单的 DTO 或 ViewModel;绝不直接返回原始数据库或 ORM 对象;查询只选所需列;按用户权限做字段级授权;在服务端而非客户端过滤;为不同访问级别定义不同 DTO(如 UserPublicDTO 与 UserPrivateDTO)。
限制:资料描述为安全反模式条目,未提供安装命令、具体运行方式或自动化工具细节。关联模式包括缺失认证反模式、批量赋值反模式。参考 OWASP Top 10 A01:2025、API3:2023、CWE-200 等。