Blog Alphorm Logo de blog informatique spécialisé en technologie et solutions IT
  • Développement
  • 3D et Animation
  • Cybersécurité
  • Infrastructure
  • Virtualisation
  • Réseaux
  • Bureautique
  • BDD
En cours de lecture : Mass Assignment en Laravel : Sécurité et Utilisation
Agrandisseur de policeAa
Blog AlphormBlog Alphorm
  • Développement
  • 3D et Animation
  • Cybersécurité
  • Infrastructure
  • Virtualisation
  • Réseaux
  • Bureautique
  • BDD
Search
  • Développement
  • 3D et Animation
  • Cybersécurité
  • Infrastructure
  • Virtualisation
  • Réseaux
  • Bureautique
  • BDD
Suivez-nous
© Alphorm 2024 - Tous droits réservés
Développement

Mass Assignment en Laravel : Sécurité et Utilisation

L'Équipe Alphorm Par L'Équipe Alphorm 9 janvier 2025
Partager
Partager

Le mass assignment en Laravel peut exposer votre application à des risques de sécurité si les champs ne sont pas correctement protégés.

Ces risques incluent l’injection de champs non autorisés, compromettant potentiellement l’intégrité de vos données.

L’article explore comment utiliser les propriétés fillable et guarded pour sécuriser vos modèles et prévenir ces vulnérabilités.

Table de matière
Mass Assignment : méthode store LaravelProtection des champs : fillable vs guardedComparatif : fillable et guarded LaravelModèle Article : sécurité et mass assignmentFAQConclusion

Formation Laravel : Le Guide Complet du Débutant

Initiez-vous à Laravel et réalisez votre première application en toute confiance.

Découvrir cette formation

En Laravel, le concept de mass assignment permet d’attribuer rapidement un ensemble de valeurs aux propriétés d’un modèle lors de la création ou de la mise à jour d’un enregistrement. Cependant, il est crucial de protéger les champs de votre modèle pour éviter les risques de sécurité, tels que l’injection de champs non autorisés. Pour cela, Laravel propose l’utilisation des propriétés fillable et guarded.

Diagramme sur mass assignment en Laravel

Mass Assignment : méthode store Laravel

Le code suivant montre comment nous utilisons le mass assignment dans la méthode store :

				
					
 public function store(Request $request)
{
// Validation des données postées avec des messages personnalisés
$article = Auth::user()->articles()->create(
request()->validate([
'title' => ['required', 'max:255', 'unique:articles,title'],
'content' => ['required'],
'category' => ['sometimes', 'nullable', 'exists:categories,id'],
])
);

// Assigner la catégorie après la création
$article->category_id = request('category', null);
$article->save();

$success = 'Article ajouté';
return back()->withSuccess($success);
}

				
			
  • Auth ::user()->articles()->create(): Cette ligne utilise lemass assignmentpour créer un article en associant directement l’utilisateur authentifié.
  • request()->validate() :Les données sont validées avant d’être transmises à la méthode create() pour garantir que seules des valeurs sûres sont insérées.

Protection des champs : fillable vs guarded

Dans le modèle Article, nous protégeons les champs pour contrôler ce qui peut être inséré en masse :

				
					
 //protected $fillable =['title','user_id','slug','content','category_id'];
protected $guarded =['category_id','user_id','slug'];

				
			
  • $fillable :Liste les attributs qui peuvent être affectés en masse. Si un attribut est spécifié dans$fillable, il peut être utilisé lors de l’appel de la méthode create() ou update().
  • $guarded :Liste les attributs quine doivent pasêtre affectés en masse. Tous les champs non spécifiés ici sont automatiquement considérés comme protégés.

Comparatif : fillable et guarded Laravel

Aspect
$fillable
$guarded
Fonctionnement
Spécifie explicitement les champs autorisés pour le mass assignment.
Spécifie explicitement les champs protégés contre le mass assignment.
Usage recommandé
Utilisé lorsque vous souhaitezpréciser uniquementles champs à affecter.
Utilisé lorsque vous voulezprotégerdes champs spécifiques tout en autorisant les autres.
Sécurité
Risque d’oubli d’ajouter un champ dans la liste si de nouveaux champs sont ajoutés au modèle.
Plus flexible car vous pouvez protéger des champs critiques et laisser les autres accessibles.
Définition
protected $fillable = [‘title’, ‘content’];
protected $guarded = [‘user_id’, ‘slug’];

Modèle Article : sécurité et mass assignment

L’exemple ci-dessous montre la configuration avec $guarded pour protéger certains champs :

				
					
 class Article extends Model
{
protected $guarded = ['category_id', 'user_id', 'slug'];
}

				
			

protected $guarded : Cette propriété protège les champs category_id, user_id, et slug contre le mass assignment , ce qui signifie que ces champs ne seront pas remplis automatiquement via des requêtes de création ou de mise à jour en masse.

Question : Pourquoi utiliser $guarded?

Utiliser $guarded peut être plus pratique lorsque vous avez beaucoup de champs dans votre modèle et que vous souhaitez seulement protéger certains champs critiques.

Résultat affiché après test

Lorsque vous testez l’application et soumettez des données via le formulaire, l’article sera créé avec les champs validés. Si un champ non autorisé est envoyé, Laravel retournera une exception de MassAssignmentException , protégeant ainsi votre application contre les modifications indésirables des champs protégés.

Exemple de résultat en cas de champ non autorisé :

				
					
 Erreur : MassAssignmentException

				
			
Astuce Pratique : Utilisez fillable si vous souhaitez explicitement définir les champs modifiables et guarded pour spécifier uniquement ceux à protéger.

Formez-vous gratuitement avec Alphorm !

Maîtrisez les compétences clés en IT grâce à nos formations gratuites et accélérez votre carrière dès aujourd'hui.

Démarrer gratuitement
illustration processus de paiement en ligne avec étapes claires et convivialité

FAQ

Qu'est-ce que le mass assignment en Laravel ?
Le mass assignment en Laravel est un concept qui permet d’attribuer rapidement un ensemble de valeurs aux propriétés d’un modèle lors de la création ou de la mise à jour d’un enregistrement. Ce mécanisme offre une méthode efficace pour manipuler les données en masse, mais nécessite des précautions pour éviter les risques de sécurité, comme l’injection de champs non autorisés. Laravel offre des solutions comme les propriétés fillable et guarded pour limiter les champs accessibles lors de ces opérations.
Comment sécuriser le mass assignment en Laravel ?
Pour sécuriser le mass assignment en Laravel, il est essentiel d’utiliser les propriétés fillable et guarded. La propriété fillable définit les champs qui peuvent être remplis en masse, tandis que guarded spécifie ceux qui doivent être protégés. L’utilisation judicieuse de ces propriétés permet de contrôler précisément quelles données peuvent être insérées ou mises à jour automatiquement, minimisant ainsi le risque d’injection de champs indésirables.
Quelle est la différence entre fillable et guarded ?
La différence entre fillable et guarded réside dans leur approche de la sécurité des champs. Fillable liste explicitement les attributs autorisés pour le mass assignment, ce qui signifie que seuls les champs spécifiés peuvent être manipulés. En revanche, guarded protège les champs indiqués, laissant tous les autres accessibles. Ainsi, fillable est utile pour une approche stricte, tandis que guarded offre plus de flexibilité en protégeant uniquement les champs critiques.
Quand utiliser fillable ou guarded en Laravel ?
L’utilisation de fillable ou guarded dépend des besoins de votre application. Fillable est recommandé lorsque vous avez un nombre limité de champs à autoriser pour le mass assignment et que vous souhaitez être explicite. Guarded est préférable lorsque vous avez de nombreux champs, mais seulement quelques-uns nécessitent une protection stricte. Cette flexibilité permet de sécuriser efficacement votre modèle tout en simplifiant la gestion des champs.
Quels sont les risques de ne pas utiliser fillable ou guarded ?
Ne pas utiliser fillable ou guarded peut exposer votre application à des risques de sécurité, notamment l’injection de champs non autorisés lors du mass assignment. Sans ces mécanismes de protection, un utilisateur malveillant pourrait potentiellement modifier des champs sensibles ou critiques, compromettant ainsi l’intégrité des données. L’absence de ces protections augmente également le risque d’erreurs et de comportements inattendus dans votre application.

Conclusion

En comprenant et en appliquant correctement les concepts de mass assignment, fillable et guarded, vous pouvez sécuriser efficacement votre application Laravel. Quelle stratégie de sécurité préférez-vous intégrer dans vos projets Laravel pour garantir la protection de vos données ?

ÉTIQUETÉ : Laravel
Facebook
Twitter
LinkedIn
Email
WhatsApp
Par L'Équipe Alphorm
Démocratiser la Connaissance Informatique pour Tous !
Suivre :
L'Équipe Alphorm, c'est la démocratisation de la connaissance informatique. Passionnés et dévoués, nous sommes là pour vous guider vers le succès en rendant la technologie accessible à tous. Rejoignez notre aventure d'apprentissage et de partage. Avec nous, le savoir IT devient une ressource inspirante et ouverte à tous dans un monde numérique en constante évolution.

Derniers Articles

  • Techniques pour gérer les fichiers texte en C#
  • Créer et lire un fichier CSV avec C#
  • JSON : Comprendre et Utiliser Efficacement
  • Créer une Base SQLite dans C#
  • Lecture des données SQLite simplifiée
Laisser un commentaire Laisser un commentaire

Laisser un commentaire Annuler la réponse

Vous devez vous connecter pour publier un commentaire.

Blog Alphorm
  • Développement
  • 3D et Animation
  • Cybersécurité
  • Infrastructure
  • Virtualisation
  • Réseaux
  • Bureautique
  • BDD
En cours de lecture : Mass Assignment en Laravel : Sécurité et Utilisation

© Alphorm - Tous droits réservés