Mass Assignment — Sur-attribution de propriétés

API OWASP API6

Définition

Quand un framework lie automatiquement les champs d'une requête aux attributs d'un objet/modèle, un attaquant peut ajouter des champs non prévus (ex: role, is_admin, balance) pour modifier des propriétés sensibles non exposées par l'UI.

Exemple

# Requête légitime attendue
POST /api/users
{"username":"bob","email":"bob@x.com"}

# Requête abusée : on ajoute des champs privilégiés
POST /api/users
{"username":"bob","email":"bob@x.com","role":"admin","is_verified":true}

Défenses

// Whitelist explicite des champs autorisés
// Laravel
$user->fill($request->only(['username','email']));
protected $fillable = ['username','email'];

// Rails : strong parameters
params.require(:user).permit(:username, :email)

// Ne jamais binder l objet entier depuis l input utilisateur