Retour à la leçon
Mission

Mission : colmater une faille de mass assignment et un plantage memoire

Proteger un modele Eloquent contre le mass assignment non controle et corriger un traitement qui charge une table entiere en memoire.

Contexte

Le modele Produit ne declare ni $fillable ni $guarded, et le controleur appelle directement Produit::create($request->all()). Un test de securite montre qu'envoyer un champ cout_achat (normalement reserve aux calculs internes de marge) dans le payload de creation suffit a le faire enregistrer tel quel en base. Par ailleurs, une commande de maintenance nocturne fait foreach (Produit::all() as $produit) { ... } sur une table qui vient de depasser 2 millions de lignes, et le processus PHP se fait tuer pour depassement de memoire.