Maison cadre php Laravel Contrefaçon de formulaire de Laravel et protection CSRF

Contrefaçon de formulaire de Laravel et protection CSRF

Dec 14, 2020 am 11:23 AM
laravel

Nous savons que la spécification de conception d'API la plus populaire actuellement est la conception d'API restFul. Restful propose cinq méthodes HTTP courantes, à savoir : obtenir, publier, mettre, corriger et supprimer. Il est très simple de construire la méthode get ou post à l'aide du formulaire HTML, mais les trois autres méthodes ne sont pas prises en charge. Mais dans Laravel, vous pouvez utiliser les trois autres méthodes mentionnées ci-dessus grâce à la technologie de falsification de formulaire.

Tutoriel recommandé : "framework laravel"

Travail de préparation

Nous devons d'abord nous préparer Travail bien fait. Nous devons créer deux routes : une route de formulaire et une route qui accepte les formulaires.

// 表单页
Route::get('form', function () {
    return view('form');
});

// 接受表单请求
Route::any('getform', function () {
    return \Illuminate\Support\Facades\Request::method();
});
Copier après la connexion

Au début, nous avons créé le formulaire de demande d'obtention le plus simple, le contenu est le suivant :

<form method="get" action="/getform">
    <input type="submit" value="sub" />
</form>
Copier après la connexion

Après avoir cliqué sur le bouton de soumission, 'GET' apparaît dans le navigateur, indiquant que l'obtention la demande a été envoyée et acceptée avec succès.

Protection CSRF

Ensuite, nous passons à la méthode de publication, puis actualisons et cliquons sur le bouton Soumettre pour voir ce qui se passe. Vous trouverez une erreur avec "page expirée" et le code d'état 419. Pourquoi Laravel ne peut-il pas accepter les demandes de publication ? Nous présenterons ici le mécanisme de protection CSRF par défaut de Laravel.

Afin d'empêcher les attaques de falsification de requêtes intersites, laravel fournit une protection par jeton CSRF. Par conséquent, pour toutes les méthodes à l'exception de la requête de la méthode get, vous devez ajouter le jeton CSRF au formulaire, comme suit :

<input type="hidden" name="_token" value="{{csrf_token()}}">
Copier après la connexion

Il a également une méthode d'abréviation, comme suit :

@csrf
Copier après la connexion

Désactivez la fonction de protection CSRF

Ce n'est généralement pas le cas Il est recommandé de désactiver la fonction CSRF de l'ensemble du site. Il est très simple de la désactiver, il suffit de commenter la ligne

\App\Http\Middleware\VerifyCsrfToken::class
Copier après la connexion

dans le fichier Kernel.php.

Liste blanche CSRF

Souvent, nous devons définir un ensemble d'URL qui ne nécessitent pas de protection CSRF, telles que les interfaces API fournies par des tiers , nous espérons que toutes les interfaces API externes ne nécessiteront pas de protection CSRF. Ensuite, vous pouvez utiliser la fonction de liste blanche CSRF pour définir la liste blanche dans le fichier app/Http/Middleware/VerifyCsrfToken.php. Comme suit :

class VerifyCsrfToken extends Middleware
{
    /**
     * The URIs that should be excluded from CSRF verification.
     *
     * @var array
     */
    protected $except = [
        /* 这里是白名单列表 */
        &#39;http://example.com/api/*&#39;,
        &#39;api/*&#39;,
        &#39;a/b/*&#39;
    ];
}
Copier après la connexion

Remarque : Pour faciliter les tests, la fonction csrf sera automatiquement désactivée lors du test de l'environnement

Faux de formulaire

Après avoir appris le mécanisme de protection CSRF, voyons comment falsifier des formulaires. Il est très simple de falsifier un formulaire, il suffit d'ajouter

<input type="hidden" name="_method" value="PUT">
Copier après la connexion

ou de l'abréger en

@method(&#39;PUT&#39;)
Copier après la connexion

Ce qui suit est un formulaire pour falsifier une demande de vente

@csrf @method(&#39;PUT&#39;)
Copier après la connexion

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

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

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)

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 ...

Laravel Multi-Lenant Extension Stancl / Tenancy: Comment personnaliser l'adresse hôte d'une connexion de base de données de locataire? Laravel Multi-Lenant Extension Stancl / Tenancy: Comment personnaliser l'adresse hôte d'une connexion de base de données de locataire? Apr 01, 2025 am 09:09 AM

Connexion de la base de données des locataires personnalisés dans le package d'extension multi-locataire Laravel Stancl / location Lors de la construction d'applications multi-locataires à l'aide du package d'extension multi-locataire Laravel Stancl / location, ...

Laravel – URL de l'action Laravel – URL de l'action Aug 27, 2024 am 10:51 AM

Laravel - URL d'action - Laravel 5.7 introduit une nouvelle fonctionnalité appelée « URL d'action appelable ». Cette fonctionnalité est similaire à celle de Laravel 5.6 qui accepte la méthode string in action. L'objectif principal de la nouvelle syntaxe introduite par Laravel 5.7 est de diriger

See all articles