Table des matières
Solution aux attaques CSRF dans Laravel
Comment éviter les attaques CSRF dans Laravel" >Comment éviter les attaques CSRF dans Laravel
Exclure le routage des exceptions de la validation CSRF" >Exclure le routage des exceptions de la validation CSRF
Maison cadre php Laravel Solution à l'attaque CSRF dans Laravel

Solution à l'attaque CSRF dans Laravel

Jun 21, 2022 pm 04:07 PM
laravel

Solution : 1. Utilisez Laravel pour générer automatiquement un "Jeton CSRF" pour chaque session utilisateur. Ce jeton peut être utilisé pour vérifier si l'utilisateur connecté et le demandeur sont la même personne. Sinon, la demande échouera 2 ; . Fournissez un Utilisez la fonction d'aide globale "csrf_token" pour obtenir la valeur du jeton. Ajoutez simplement le code du jeton dans le formulaire de soumission de vue. La syntaxe est "<...value php="" echo="">" .

Solution à l'attaque CSRF dans Laravel

L'environnement d'exploitation de cet article : système Windows 10, Laravel version 9, ordinateur Dell G3.

Solution aux attaques CSRF dans Laravel

CSRF est l'abréviation anglaise de Cross-site request forgery ;

Éviter les attaques CSRF dans le framework Laravel est très simple :

1 Laravel fournit automatiquement une solution pour chaque session utilisateur ; Jeton CSRF, qui peut être utilisé pour vérifier si l'utilisateur connecté et le demandeur sont la même personne. Dans le cas contraire, la demande échoue. (Le principe est le même que le code de vérification.)

2. Laravel fournit une fonction d'assistance globale csrf_token pour obtenir la valeur du jeton, il vous suffit donc d'ajouter le code HTML suivant au formulaire de soumission de vue pour amener le jeton dans le request :

<input type="hidden" name="_token" value="<?php echo csrf_token(); ?>">
Copier après la connexion

Comment éviter les attaques CSRF dans Laravel

Cas : Implémenter la vérification du mécanisme CSRF via des cas
1 Créez deux routes, une pour afficher le formulaire (get) et l'autre pour traiter les demandes (post)

.
Route::get(&#39;test6&#39;,&#39;Home\TestController@test6&#39;);Route::post(&#39;test7&#39;,&#39;Home\TestController@test7&#39;);
Copier après la connexion

2. Créer des exigences Méthode

	 public function test6(){
        return view(&#39;home.test.test6&#39;);
     }
     public function test7()
     {
         return "请求提交成功";
     }
Copier après la connexion

3. Créez le formulaire simple requis

Solution à lattaque CSRF dans Laravel

4 Soumettez l'effet (page d'erreur)

Solution à lattaque CSRF dans Laravel

Conclusion : À travers le cas tout à l'heure, cela montre que la vérification csrf. le mécanisme dans Laravel est activé par défaut.

5. Résoudre le problème d'erreur (comment réussir la vérification csrf)
Solution : apporter la valeur du jeton requise pour csrf, et la transmettre à la méthode suivante avec la requête

<form action="/home/test/test7" method="post">
    用户名:<input type="text" name="username"><br>
    <input type="hidden" name="_token" value="{{csrf_token()}}">
    {{csrf_field()}}
    <input type="submit" value="提交"></form>
Copier après la connexion

Simplification de la méthode csrf_token : {{csrf_field( )}}

Forme d'expression spécifique :

Solution à lattaque CSRF dans Laravel

La différence entre les deux :
Csrf_token génère uniquement la valeur du jeton
Csrf_field génère un champ masqué d'entrée entier

Comment choisir lors de son utilisation ultérieure : Dans la plupart Dans certains cas, vous pouvez décider vous-même de la sélection de la situation. Cependant, il existe une situation où le développeur n'a pas le droit de choisir et doit utiliser csrf_token. Dans ce cas, la méthode de soumission de formulaire asynchrone est utilisée.

Exclure le routage des exceptions de la validation CSRF

Toutes les requêtes n'ont pas besoin d'éviter les attaques CSRF, telles que les requêtes adressées à des API tierces pour obtenir des données.
Vous pouvez ajouter l'URL de demande à exclure au tableau d'attributs $sauf dans le middleware VerifyCsrfToken (app/Http/Middleware/VerifyCsrfToken.php) :

Définissez les exceptions en écrivant la configuration :
Écriture d'exclusion de route unique

 &#39;home.test.test6&#39;,
Copier après la connexion

Multiple The les éléments sont séparés par "," et suivent la méthode d'écriture du tableau.

&#39;home.test.test6&#39;,&#39;home.test.test7&#39;
Copier après la connexion

Si vous devez exclure toutes les routes et utiliser csrf, vous pouvez écrire :

&#39;*&#39;
Copier après la connexion

[Recommandations associées : tutoriel vidéo laravel]

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Laravel - Commandes artisanales Laravel - Commandes artisanales Aug 27, 2024 am 10:51 AM

Laravel - Artisan Commands - Laravel 5.7 est livré avec une nouvelle façon de traiter et de tester de nouvelles commandes. Il inclut une nouvelle fonctionnalité de test des commandes artisanales et la démonstration est mentionnée ci-dessous ?

Laravel - Personnalisations de la pagination Laravel - Personnalisations de la pagination Aug 27, 2024 am 10:51 AM

Laravel - Personnalisations de pagination - Laravel inclut une fonctionnalité de pagination qui aide un utilisateur ou un développeur à inclure une fonctionnalité de pagination. Le paginateur Laravel est intégré au générateur de requêtes et à Eloquent ORM. La méthode paginate automatique

Comment obtenir le code de retour lorsque l'envoi par e-mail échoue à Laravel? Comment obtenir le code de retour lorsque l'envoi par e-mail échoue à Laravel? Apr 01, 2025 pm 02:45 PM

Méthode pour obtenir le code de retour lorsque l'envoi par e-mail de Laravel échoue. Lorsque vous utilisez Laravel pour développer des applications, vous rencontrez souvent des situations où vous devez envoyer des codes de vérification. Et en réalité ...

La tâche de calendrier Laravel n'est pas exécutée: que dois-je faire si la tâche n'est pas en cours d'exécution après le calendrier: Exécuter la commande? La tâche de calendrier Laravel n'est pas exécutée: que dois-je faire si la tâche n'est pas en cours d'exécution après le calendrier: Exécuter la commande? Mar 31, 2025 pm 11:24 PM

Laravel Schedule Tâche d'exécution de dépannage non réactif Lorsque vous utilisez la planification des tâches de calendrier de Laravel, de nombreux développeurs rencontreront ce problème: Schedule: Exécuter ...

Dans Laravel, comment gérer la situation où les codes de vérification ne sont pas envoyés par e-mail? Dans Laravel, comment gérer la situation où les codes de vérification ne sont pas envoyés par e-mail? Mar 31, 2025 pm 11:48 PM

La méthode de traitement de l'échec de l'e-mail de Laravel à envoyer le code de vérification est d'utiliser Laravel ...

Comment implémenter la fonction de table personnalisée de clic pour ajouter des données dans l'administrateur DCAT? Comment implémenter la fonction de table personnalisée de clic pour ajouter des données dans l'administrateur DCAT? Apr 01, 2025 am 07:09 AM

Comment implémenter la fonction du tableau de Cliquez sur personnalisé pour ajouter des données dans DCATADMIN (Laravel-Admin) lors de l'utilisation de DCAT ...

Laravel - Serveur de vidage Laravel - Serveur de vidage Aug 27, 2024 am 10:51 AM

Laravel - Dump Server - Le serveur de dump Laravel est livré avec la version de Laravel 5.7. Les versions précédentes n'incluent aucun serveur de dump. Le serveur de vidage sera une dépendance de développement dans le fichier laravel/laravel composer.

Partage de connexion Laravel Redis: pourquoi la méthode de sélection affecte-t-elle d'autres connexions? Partage de connexion Laravel Redis: pourquoi la méthode de sélection affecte-t-elle d'autres connexions? Apr 01, 2025 am 07:45 AM

L'impact du partage des connexions redis dans Laravel Framework et sélectionnez Méthodes Lors de l'utilisation de Laravel Framework et Redis, les développeurs peuvent rencontrer un problème: grâce à la configuration ...

See all articles