Maison  >  Article  >  cadre php  >  laravel supprimer csrf

laravel supprimer csrf

WBOY
WBOYoriginal
2023-05-29 09:57:07947parcourir

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>

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:

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',
    ],
];

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]);

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!

Déclaration:
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