首页/安全/漏洞与攻击面速查/批量赋值(Mass Assignment)风险
Web 漏洞原理与防护55 条

批量赋值(Mass Assignment)风险

框架把请求字段自动绑定到对象属性时,攻击者可通过额外字段修改本无权限的属性(如 role、is_admin);防护是显式字段白名单或 DTO 映射。

漏洞与攻击面速查安全更新于 2026-10-12

风险与修复对比(伪代码)

风险与修复对比(伪代码)
风险:User.update(req.body)             # 全量字段绑定
安全:User.update({ name: req.body.name, email: req.body.email })
框架级白名单:
Rails:params.require(:user).permit(:name, :email)
Laravel:$request->only(['name','email'])
Spring:使用 DTO 接收并手动映射
权限字段(role、is_admin)、状态字段、金额字段属于重点保护对象,任何入口都不应接受客户端直传。

易错点

  • 只在注册接口做了字段限制:资料更新接口漏配,同一对象有多个写入入口都要覆盖

数据来源与参考

  • OWASP Mass Assignment Cheat Sheet
  • Rails Strong Parameters 文档
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌