Protection Laravel CSRF

Protection Laravel CSRF
La forme complète du CSRF est la contrefaçon de demande croisée. Il s'agit d'un type d'attaque en ligne dans lequel l'attaquant envoie des demandes en tant qu'utilisateur autorisé à un système en accédant aux informations d'un utilisateur particulier de ce système et effectue différents types d'activités malveillantes en utilisant l'identité de cet utilisateur. L'impact de cette attaque dépend des privilèges de la victime sur le système. Si la victime est un utilisateur normal, cela affectera uniquement les données personnelles de la victime. Mais si la victime est l'administrateur du système, l'attaquant peut endommager l'ensemble du système. Les utilisateurs de tout site Web d'entreprise, les réseaux sociaux peuvent être affectés par cette attaque. Cette attaque peut être évitée facilement en utilisant la protection Laravel CSRF pour rendre le système plus sécurisé. Laravel génère automatiquement un jeton CRSF pour chaque session d'utilisateur actif par laquelle toute demande et approbation sont données à l'utilisateur authentifié pour le système. La façon dont la protection Laravel CSRF peut être appliquée dans l'application Laravel est affichée dans ce tutoriel.

Conditions préalables:

Avant de commencer ce tutoriel, vous devez vous assurer que le Laravel est installé et fonctionne correctement dans le système. J'ai installé les applications suivantes sur le système pour faire ce tutoriel.

  • Apache / 2.4.41 (Ubuntu)
  • Php 7.4.3 (CLI)
  • Mariadb ver 15.1
  • Laravel Framework 7.25.0

Comment implémenter CSRF:

La protection du CSRF peut être implémentée dans Laravel en utilisant n'importe quel formulaire HTML avec une forme cachée de jeton CSRF et la demande de l'utilisateur est validée en utilisant le middleware CSRF VerifyCsrfToken. L'une des options suivantes peut être utilisée pour générer un jeton CSRF.

UN. @csrf

Il s'agit d'une directive à la lame pour générer un champ de jeton qui utilisera pour la vérification. Il génère un champ de saisie caché.

B. csrf_token ()

Cette fonction peut être utilisée dans la balise Meta et le champ de saisie caché du formulaire HTML. Il génère une chaîne aléatoire en tant que jeton CSRF.

C. csrf_field ()

Cette fonction crée un champ caché pour la forme HTML où il est utilisé et génère un jeton CSRF.

Les utilisations des options ci-dessus sont affichées à l'aide de formulaires HTML dans la section suivante du tutoriel.

Utilisation de @CSRF:

Créer un fichier View Laravel nommé CSRF1.lame.php avec le code HTML suivant où @csrf La directive est utilisée pour générer un jeton CSRF.

CSRF1.lame.php



Protection du CSRF



Méthode de protection Laravel CSRF-1



@csrf










Ajouter l'itinéraire suivant dans le la toile.php fichier pour charger le fichier d'affichage dans le navigateur. Lorsque l'utilisateur donnera CSRF1 Après l'URL de base, il cherchera CSRF1.lame.php fichier dans le voir Dossier du projet Laravel.

Route :: View ('/ csrf1', 'CSRF1');

Démarrez le serveur Apache et exécutez l'URL suivante à partir du navigateur pour charger la vue dans le navigateur. Ici, laravelpro est le nom du projet Laravel. Vous pouvez également exécuter le serveur de développement Laravel à l'aide de la commande php artisan.

https: // localhost / laravelpro / public / csrf1

Si vous inspectez la page, vous obtiendrez la sortie comme ci-dessous. Ici, un champ caché avec la valeur est généré automatiquement par @csrf directif.

Utilisation de csrf_token ():

Créer un fichier View Laravel nommé csrf2.lame.php avec le code HTML suivant où le csrf_token () La fonction est utilisée pour générer un jeton CSRF. Cette fonction est utilisée comme valeur de l'attribut de valeur du champ caché et il est utilisé avec deux supports bouclés.

csrf2.lame.php



Protection du CSRF



Méthode de protection Laravel CSRF-2














Ajouter la route suivante dans la toile.php fichier pour charger le fichier d'affichage dans le navigateur. Comme la première méthode, lorsque l'utilisateur donnera csrf2 Après l'URL de base, il cherchera csrf2.lame.php fichier dans le voir Dossier du projet Laravel.

Route :: View ('/ csrf2', 'csrf2');

Exécutez l'URL suivante à partir de n'importe quel navigateur comme avant de charger le deuxième fichier d'affichage.

https: // localhost / laravelpro / public / csrf2

Si vous inspectez la page, vous obtiendrez la sortie comme ci-dessous. Ici, la valeur du champ caché est générée en utilisant le csrf_token () fonction.

Utilisation de csrf_field ():

Créer un fichier View Laravel nommé CSRF3.lame.php avec le code HTML suivant où le csrf_field () La fonction est utilisée pour générer un jeton CSRF. Cette fonction fonctionne comme @csrf Directive et vous n'avez pas besoin d'ajouter un champ caché dans le formulaire HTML. Il est également utilisé avec deux supports bouclés comme csrf_token () fonction.

CSRF3.lame.php



Protection du CSRF



Méthode de protection Laravel CSRF-3









csrf_field ()




Ajouter la route suivante dans la toile.php fichier pour charger le fichier d'affichage dans le navigateur. Comme la première méthode, lorsque l'utilisateur donnera CSRF3 Après l'URL de base, il cherchera CSRF3.lame.php fichier dans le voir Dossier du projet Laravel.

Route :: View ('/ csrf3', 'CSRF3');

Exécutez l'URL suivante à partir de n'importe quel navigateur comme avant de charger le deuxième fichier d'affichage.

https: // localhost / laravelpro / public / csrf3

Si vous inspectez la page, vous obtiendrez la sortie comme ci-dessous. Ici, la valeur du champ caché est générée en utilisant le csrf_field () fonction.

Les trois méthodes de génération de jeton CSRF indiqué ci-dessus génère la même valeur de jeton pour le même navigateur. Lorsque l'attaquant enverra une demande pour accéder au contenu de tout utilisateur authentifié qui est en ligne alors Vérifier Le middleware correspondra au jeton de demande et au jeton de session stocké pour valider la demande avant de gérer. De cette façon, l'attaque du CSRF peut être évité facilement à Laravel. Cette protection peut être désactivée du Laravel en supprimant l'entrée de App \ http \ middleware \ vefycsrftoken de $ middleware tableau du fichier APP / HTTP / KERNEL.php.

Conclusion:

L'accès non autorisé peut avoir un impact majeur sur toute application et en endommager correctement les données. Ainsi, la protection du CSRF est très importante pour sécuriser toute application où les différents types de tâches transnationaux sont effectués. Ce tutoriel aidera les développeurs Laravel à connaître les moyens de sécuriser leur application en utilisant la protection CSRF.