Maison  >  Article  >  cadre php  >  Comment utiliser le middleware Laravel pour sécuriser votre application

Comment utiliser le middleware Laravel pour sécuriser votre application

WBOY
WBOYoriginal
2023-11-03 12:52:54975parcourir

Comment utiliser le middleware Laravel pour sécuriser votre application

À mesure que les applications Web deviennent de plus en plus complexes, il devient de plus en plus important de sécuriser vos applications. Le middleware de Laravel fournit un moyen simple et utile de protéger votre application contre les attaques malveillantes tout en améliorant la sécurité de votre application. Cet article explique comment utiliser le middleware dans Laravel pour sécuriser votre application et fournit des exemples de code spécifiques.

Qu’est-ce qu’un middleware ?

Le middleware est du code qui s'exécute entre les requêtes et les réponses. Le middleware vous permet de filtrer de manière transparente les requêtes entre les routeurs et les contrôleurs. Vous pouvez créer un middleware personnalisé et les lier au routeur ou au contrôleur de votre application.

Le middleware est conçu pour résoudre les problèmes suivants :

  • Authentification : assurez-vous que l'utilisateur est authentifié et dispose de l'autorisation d'accéder à l'application.
  • Autorisation : déterminez si l'utilisateur/le rôle est autorisé à effectuer l'action demandée.
  • Journalisation : enregistrez les informations clés des demandes et des réponses pour le débogage ou l'audit de sécurité.
  • Caching : mettez en cache les requêtes et les réponses pour améliorer les performances.
  • Transfert de données : convertir/formater les données des demandes et des réponses.
  • Sécurité : assurez-vous que les applications sont protégées contre la falsification de requêtes intersites (CSRF), les scripts intersites (XSS) et d'autres vulnérabilités de sécurité.

Comment créer un middleware ?

Créer un middleware dans Laravel est très simple. Voici les étapes pour créer un middleware :

  1. Créer une classe middleware

Tout d'abord, vous devez créer une classe middleware. Vous pouvez utiliser la commande Artisan pour créer un modèle pour le middleware :

php artisan make:middleware MiddlewareName
  1. Configurer le Middleware

Une fois la classe middleware créée, vous devez enregistrer le middleware dans le noyau HTTP de votre application. Ce fichier se trouve dans le répertoire /app/Http. Ajoutez votre middleware au tableau $middleware.

  1. Utilisation d'un middleware dans les routeurs/contrôleurs

Enfin, vous pouvez attacher votre middleware personnalisé au routeur ou au contrôleur de votre application. Vous pouvez utiliser la méthode middleware pour ajouter un middleware à votre routeur/contrôleur. Par exemple :

Route::get('/path', 'Controller@action')
                    ->middleware('middlewareName');

Cela fera d'abord passer la requête par le middleware avant d'atteindre le contrôleur.

Sécuriser votre application

Maintenant que nous comprenons comment créer un middleware, explorons comment l'utiliser pour protéger votre application.

  1. CSRF

L'attaque CSRF fait référence à une méthode d'attaque dans laquelle l'attaquant utilise les identifiants de connexion de la victime (cookie ou session) pour réaliser une opération en son nom. Les requêtes non validées peuvent facilement conduire à des failles de sécurité. Ces problèmes peuvent être facilement évités grâce à la protection CSRF intégrée de Laravel.

Dans votre application, vous pouvez activer la protection CSRF dans le noyau HTTP de l'application. Vous ferez généralement ceci :

// 在Http/Kernel.php文件中
class Kernel extends HttpKernel
{
    protected $middleware = [
        IlluminateFoundationHttpMiddlewareCheckForMaintenanceMode::class,
        IlluminateFoundationHttpMiddlewareValidatePostSize::class,
        AppHttpMiddlewareTrimStrings::class,
        IlluminateFoundationHttpMiddlewareConvertEmptyStringsToNull::class,
        IlluminateSessionMiddlewareStartSession::class,
        IlluminateViewMiddlewareShareErrorsFromSession::class,
        AppHttpMiddlewareVerifyCsrfToken::class,
    ];
}
  1. XSS

Le cross-site scripting (XSS) est une attaque dans laquelle un attaquant exécute du code JavaScript malveillant sur le navigateur de la victime. Cela peut conduire à la divulgation d’informations, à l’injection de code malveillant et à d’autres vulnérabilités de sécurité. Le middleware de Laravel peut vous aider à atténuer les dommages causés par les attaques XSS.

Dans Laravel, vous pouvez utiliser HtmlPurifier ou d'autres packages tiers pour filtrer vos données d'entrée. Voici un exemple :

//在app/Http/Middleware/HtmlPurifier.php文件中
namespace AppHttpMiddleware;

use Closure;
use HTMLPurifier;

class HtmlPurifier
{
    public function handle($request, Closure $next)
    {
        $input = $this->purify($request->input());
        $request->merge($input);
        return $next($request);
    }

    protected function purify(array $input)
    {
        $config = HTMLPurifier_Config::createDefault();
        $purifier = new HTMLPurifier($config);
        foreach ($input as $key => $value) {
            $input[$key] = $purifier->purify($value);
        }
        return $input;
    }
}
  1. Authorization

Authorization peut vous aider à déterminer si l'utilisateur/le rôle est autorisé à effectuer l'action demandée. L'autorisation intégrée de Laravel rend cela facile.

Tout d’abord, vous devez créer la classe de stratégie d’autorisation. Utilisez la commande Artisan pour générer un modèle pour cette classe :

php artisan make:policy PostPolicy --model=Post

Cela créera une nouvelle classe PostPolicy dans le répertoire /app/Policies de votre application.

Vous devez également enregistrer la politique d'autorisation auprès du fournisseur de services dans votre demande. Définissez la politique d'autorisation dans AuthServiceProvider de votre application :

// 在app/Providers/AuthServiceProvider.php文件中
namespace AppProviders;

use AppPost;
use AppPoliciesPostPolicy;
use IlluminateSupportFacadesGate;
use IlluminateFoundationSupportProvidersAuthServiceProvider as ServiceProvider;

class AuthServiceProvider extends ServiceProvider
{
    protected $policies = [
        Post::class => PostPolicy::class,
    ];

    // 注册策略
    public function boot()
    {
        $this->registerPolicies();
    }
}

Ensuite, vous devez utiliser la méthode d'autorisation de Laravel dans votre contrôleur pour vérifier que l'utilisateur est autorisé à effectuer l'action demandée. Par exemple :

public function update(Request $request, Post $post)
{
    $this->authorize('update', $post);
    // 只有具备操作权限的用户才能看到以下内容
    return view('posts.update', [
        'post' => $post
    ]);
}

Après l'autorisation, seuls les utilisateurs/rôles autorisés par la politique d'autorisation peuvent afficher la vue posts.update.

Résumé

Le middleware de Laravel est un outil de sécurité puissant qui peut aider les développeurs à protéger rapidement et facilement les applications contre CSRF, XSS et autres vulnérabilités de sécurité. Cet article fournit des exemples de code concrets pour montrer comment utiliser le middleware pour protéger vos applications. Si vous n'avez pas encore commencé à utiliser un middleware pour protéger vos applications, il est temps de commencer.

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