Maison >cadre php >Laravel >laravel désactive la vérification des jetons

laravel désactive la vérification des jetons

PHPz
PHPzoriginal
2023-05-29 12:55:07871parcourir

Laravel est un framework PHP populaire qui fournit de nombreuses fonctionnalités et outils pratiques pour aider les développeurs à créer des applications Web rapidement et efficacement. L'une des fonctions importantes est la vérification des jetons, qui est un mécanisme de sécurité utilisé pour garantir que les informations de l'utilisateur ne seront pas consultées ou modifiées illégalement. Mais parfois, les développeurs doivent désactiver temporairement la vérification des jetons. Cet article explique comment désactiver la vérification des jetons dans Laravel.

1. Pourquoi désactiver la vérification des jetons ?

Dans Laravel, la vérification des jetons est activée par défaut. Lorsqu'un utilisateur se connecte ou s'enregistre via une application Web, Laravel génère automatiquement un jeton pour vérifier l'identité de l'utilisateur et prévenir les attaques malveillantes. Cela peut améliorer la sécurité des applications Web et réduire les risques potentiels.

Mais dans certains cas, les développeurs devront peut-être désactiver temporairement la vérification des jetons. Par exemple, lorsque les développeurs testent ou déboguent, la désactivation de la vérification des jetons peut accélérer le développement et l'efficacité. De plus, dans certains cas, lors de l'appel d'API tierces ou de l'intégration d'autres systèmes, la vérification des jetons doit être temporairement désactivée.

2. Comment désactiver la vérification des jetons ?

Dans Laravel, la désactivation de la vérification des jetons peut être réalisée de deux manières.

  1. Désactivez la vérification des jetons dans le middleware

Le middleware est une fonctionnalité très puissante de Laravel et peut être utilisé pour gérer les requêtes et les réponses HTTP. Dans Laravel, la vérification des jetons est implémentée dans le middleware. Par conséquent, le comportement de la vérification des jetons peut être modifié dans le middleware.

Pour désactiver la vérification des jetons, vous pouvez modifier le fichier AppHttpMiddlewareVerifyCsrfToken.php et le convertir en le code suivant :

<?php

namespace AppHttpMiddleware;

use IlluminateFoundationHttpMiddlewareVerifyCsrfToken as Middleware;

class VerifyCsrfToken extends Middleware
{
    /**
     * The URIs that should be excluded from CSRF verification.
     *
     * @var array
     */
    protected $except = [
        //
    ];

    /**
     * Determine if the session and input CSRF tokens match.
     *
     * @param  IlluminateHttpRequest  $request
     * @return bool
     */
    protected function tokensMatch($request)
    {
        return true;
    }
}

Dans le code ci-dessus, nous désactivons la vérification des jetons en remplaçant la fonction tokensMatch(). La fonction tokensMatch() est une fonction utilisée pour comparer si le jeton d'entrée correspond au jeton de la session. En renvoyant true, nous désactivons la vérification des jetons.

Veuillez noter que cette méthode n’est pas totalement sûre. La désactivation de la validation des jetons rend votre application Web vulnérable aux attaques CSRF. Par conséquent, nous recommandons son utilisation uniquement lors des tests et du développement.

  1. Désactivez la vérification des jetons dans l'itinéraire

Une autre façon de désactiver la vérification des jetons consiste à utiliser la fonction withoutMiddleware() dans l'itinéraire. Cette fonction peut nous aider à ignorer les middlewares spécifiés, y compris les middlewares de vérification des jetons.

Pour utiliser la fonction withoutMiddleware(), vous devez appeler le contrôleur et la fonction spécifiés via le routage. Par exemple :

Route::get('/example', 'ExampleController@exampleFunction')->withoutMiddleware(['auth', 'csrf']);

Dans le code ci-dessus, nous utilisons la fonction withoutMiddleware() pour supprimer le middleware de vérification de jeton de la route. Cela nous permettra d'utiliser des requêtes HTTP sans jeton.

Il convient de noter que cette méthode présente également des failles de sécurité et qu'il est recommandé de l'utiliser lorsque cela est nécessaire.

3. Activez la vérification des jetons

Après avoir terminé le test ou désactivé la vérification des jetons, nous vous recommandons d'activer la vérification des jetons pour garantir la sécurité de votre application Web. Vous pouvez utiliser la même méthode pour activer la vérification du jeton, supprimez simplement le code modifié.

Dans Laravel, activer la validation des jetons est très simple. Assurez-vous simplement que le middleware VerifyCsrfToken est enregistré et non désactivé.

<?php

namespace AppHttp;

use IlluminateFoundationHttpKernel as HttpKernel;

class Kernel extends HttpKernel
{
    /**
     * The application's global HTTP middleware stack.
     *
     * @var array
     */
    protected $middleware = [
        IlluminateFoundationHttpMiddlewareCheckForMaintenanceMode::class,
        IlluminateFoundationHttpMiddlewareValidatePostSize::class,
        AppHttpMiddlewareTrimStrings::class,
        IlluminateFoundationHttpMiddlewareConvertEmptyStringsToNull::class,
    ];

    /**
     * The application's route middleware.
     *
     * @var array
     */
    protected $routeMiddleware = [
        'auth' => AppHttpMiddlewareAuthenticate::class,
        'auth.basic' => IlluminateAuthMiddlewareAuthenticateWithBasicAuth::class,
        'bindings' => IlluminateRoutingMiddlewareSubstituteBindings::class,
        'can' => IlluminateAuthMiddlewareAuthorize::class,
        'guest' => AppHttpMiddlewareRedirectIfAuthenticated::class,
        'signed' => IlluminateRoutingMiddlewareValidateSignature::class,
        'throttle' => IlluminateRoutingMiddlewareThrottleRequests::class,
        'verified' => IlluminateAuthMiddlewareEnsureEmailIsVerified::class,
        'csrf' => AppHttpMiddlewareVerifyCsrfToken::class,
    ];
}

Dans le code ci-dessus, nous pouvons voir que le middleware VerifyCsrfToken est enregistré en tant que middleware 'csrf', ce qui signifie qu'il fonctionnera par défaut.

4. Conclusion

La vérification des jetons est un mécanisme de sécurité très important dans Laravel, qui peut empêcher les attaques malveillantes et protéger la sécurité des données des utilisateurs. Mais parfois, vous devrez peut-être désactiver temporairement la vérification des jetons pour accélérer le développement et l'efficacité. Cet article explique comment désactiver la vérification des jetons dans Laravel et vous rappelle les risques de sécurité possibles causés par la désactivation de la vérification des jetons. Nous vous recommandons d'utiliser cette fonctionnalité uniquement pendant le développement et les tests. Dans un environnement de production, vous devez laisser la vérification des jetons activée pour garantir la sécurité de votre application Web.

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