Maison > cadre php > Laravel > laravel supprimer csrf

laravel supprimer csrf

WBOY
Libérer: 2023-05-29 09:57:07
original
1018 Les gens l'ont consulté

Laravel est un framework PHP populaire qui est devenu un choix populaire parmi les développeurs professionnels et les débutants. Le framework Laravel implémente la protection CSRF pour empêcher les attaques de falsification de requêtes intersites. Cependant, dans certains cas, il est parfois nécessaire de supprimer la protection CSRF. Cet article vous explique comment supprimer la protection CSRF dans Laravel.

  1. Qu'est-ce que la protection CSRF

La falsification de requêtes intersites, abrégée en CSRF en anglais, est une attaque Web courante. L'attaquant utilise l'identité de la victime lorsqu'elle est connectée pour forger des requêtes afin de réaliser des opérations malveillantes. Afin de prévenir ce type d'attaque, Laravel implémente la fonction de protection CSRF, qui peut bien protéger les applications Web.

  1. Mise en œuvre de la protection CSRF dans Laravel

La mise en œuvre de la protection CSRF dans Laravel passe principalement par les trois étapes suivantes :

2.1. Générer le token CSRF

Ajoutez l'instruction csrf_field dans le formulaire HTML, cette instruction générera automatiquement le jeton CSRF. Jeton CSRF, et ajouté au champ masqué du formulaire.

<form>
@csrf
<input type="text" name="name">
<input type="submit" value="Submit">
</form>
Copier après la connexion

2.2. Vérifier le jeton CSRF

Sur le backend, Laravel vérifiera si le jeton CSRF demandé est légal. Si c'est illégal, un message d'erreur sera renvoyé. Dans Laravel 5.6 et versions ultérieures, le middleware de protection CSRF est ajouté par défaut et toutes les demandes de publication seront soumises à une vérification CSRF. Si votre requête ne porte pas correctement le token CSRF, vous obtiendrez le message d'erreur suivant :

TokenMismatchException in VerifyCsrfToken.php line 68:
Copier après la connexion

2.3. Protection contre les attaques de cross-site scripting

Afin de prévenir les attaques de cross-site scripting, vous devez suivre le principe de "escape". sortie" et ne pas sortir directement. Les données fournies par l'utilisateur doivent être traitées avant la sortie. Par exemple, utilisez les fonctions htmlentities ou htmlspecialchars pour échapper les caractères spéciaux HTML.

Ce qui précède explique comment implémenter la protection CSRF dans Laravel. Ci-dessous, nous expliquerons comment supprimer cette protection.

  1. Comment supprimer la protection CSRF dans Laravel

Si votre application Web ne nécessite pas de protection CSRF, vous pouvez également supprimer la protection CSRF dans Laravel. Ci-dessous, nous présenterons deux méthodes pour supprimer la protection CSRF.

3.1. Désactivez le middleware de protection CSRF

Par défaut, toutes les demandes Laravel Post seront soumises à une vérification CSRF. Si vous souhaitez supprimer cette vérification, vous pouvez supprimer le middleware de protection CSRF du Middleware. La méthode spécifique est la suivante :

Ouvrez le fichier app/Http/Kernel.php, recherchez le groupe de middleware Web dans le tableau $middlewareGroups et supprimez le middleware ['IlluminateFoundationHttpMiddlewareVerifyCsrfToken'] du tableau.

protected $middlewareGroups = [
    'web' => [
        AppHttpMiddlewareEncryptCookies::class,
        // IlluminateSessionMiddlewareAuthenticateSession::class,
        // IlluminateRoutingMiddlewareSubstituteBindings::class,
        // IlluminateFoundationHttpMiddlewareVerifyCsrfToken::class,
    ],

    'api' => [
        'throttle:60,1',
        'auth:api',
    ],
];
Copier après la connexion

Pour le moment, toutes les demandes de publication ne seront pas soumises à une vérification de protection CSRF. Bien que la protection CSRF puisse être supprimée, cela représente également un certain risque de sécurité. Par conséquent, il est recommandé de l’activer uniquement dans des environnements de test stricts.

3.2. Ignorer manuellement la protection CSRF

Si vous désactivez le middleware de protection CSRF globalement, vous pouvez ignorer manuellement la vérification de la protection CSRF dans une route ou un contrôleur spécifique. La méthode spécifique est la suivante :

Dans la méthode de route ou de contrôleur qui doit être publiée, utilisez la méthode sansMiddleware :

Route::post('route', function () {
    //
})->withoutMiddleware([IlluminateFoundationHttpMiddlewareVerifyCsrfToken::class]);
Copier après la connexion

Cette méthode peut être utilisée dans certains cas particuliers, mais il n'est pas recommandé d'utiliser cette méthode dans tous les cas. itinéraires.

Pour résumer, implémenter la protection CSRF dans Laravel est une bonne mesure de sécurité. Il n'est pas recommandé de supprimer la protection CSRF lorsqu'elle est inutile. Si nécessaire, vous pouvez supprimer la protection CSRF via les méthodes ci-dessus. Bien entendu, dans le développement réel du projet, veuillez l'utiliser avec prudence en fonction de la situation réelle.

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!

source:php.cn
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal