Maison  >  Article  >  cadre php  >  Comment empêcher CSRF dans Laravel

Comment empêcher CSRF dans Laravel

WBOY
WBOYoriginal
2023-05-20 20:06:36600parcourir

Laravel est un framework PHP populaire qui fournit de nombreux outils pratiques et mesures de sécurité, permettant aux développeurs de créer facilement des applications Web avancées. Parmi elles, la prévention des attaques de falsification de requêtes intersites (CSRF) est une mesure de sécurité très importante. Dans cet article, nous présenterons comment prévenir efficacement les attaques CSRF dans Laravel.

Qu'est-ce qu'une attaque CSRF ?

Avant d'examiner de plus près comment Laravel empêche les attaques CSRF, comprenons d'abord ce qu'est une attaque CSRF. L'attaque CSRF (Cross-Site Request Forgery), également connue sous le nom d'« attaque en un clic » ou de « session riding », est une technologie d'attaque réseau. L'attaquant utilise les autorisations de session de l'utilisateur sur le site Web authentifié pour effectuer l'attaque à l'insu de l'utilisateur. . effectuer des opérations illégales. En bref, les attaquants incitent les utilisateurs à effectuer des opérations sur un site Web, transférant ainsi illégalement des fonds ou volant des informations sensibles des utilisateurs.

Le principe d'une attaque CSRF n'est pas compliqué. L'attaquant crée un formulaire ou un lien sur un site Web, qui contient des demandes pour effectuer certaines opérations dangereuses. L'attaquant incitera alors l'utilisateur à cliquer ou à soumettre ces faux formulaires. Lorsque l'utilisateur effectue ces opérations, l'attaquant peut profiter de cette opportunité pour voler les informations de l'utilisateur et effectuer certaines opérations illégales.

Comment prévenir les attaques CSRF ?

Laravel fournit quelques méthodes pour empêcher les attaques CSRF, voici quelques méthodes couramment utilisées :

  1. Jeton CSRF

Laravel utilise le jeton CSRF pour empêcher les attaques CSRF, le jeton est envoyé lorsque le formulaire est soumis et la validation est effectué côté serveur. Laravel fournit un jeton unique pour chaque formulaire et requête AJAX dans chaque application. Ce jeton peut être intégré dans le formulaire et la requête AJAX. Lorsque la requête est envoyée au serveur, Laravel vérifiera que le jeton correspond au jeton généré de manière aléatoire dans le fichier. application. Si la correspondance réussit, la demande est traitée.

Dans Laravel, vous pouvez utiliser la fonction csrf_field() pour générer un champ caché contenant le jeton CSRF, qui peut être intégré dans le formulaire. Par exemple :

<form action="/your/url" method="POST">
    {{ csrf_field() }}
    <!-- 其他表单字段 -->
</form>
  1. En-tête X-CSRF-Token

Lors de l'envoi d'une requête POST à ​​l'aide d'AJAX, vous pouvez ajouter le champ X-CSRF-Token dans l'en-tête de la requête, qui contient le jeton CSRF, et Laravel effectuera le vérifier.

Exemple :

$.ajaxSetup({
    headers: {
        'X-CSRF-Token': $('meta[name="_token"]').attr('content')
    }
});
  1. Middleware de validation CSRF

Dans Laravel, la validation CSRF peut être forcée pour chaque requête POST, PUT, PATCH ou DELETE via le middleware de validation CSRF. Si la demande ne contient pas le jeton CSRF correct, la demande sera rejetée et un code d'état HTTP 419 sera renvoyé.

Afin d'activer le middleware de vérification CSRF, ajoutez simplement le middleware CSRF dans le groupe middleware.

// app/Http/Kernel.php
protected $middlewareGroups = [
    'web' => [
        // 其他中间件
        IlluminateFoundationHttpMiddlewareVerifyCsrfToken::class,
    ],

    // 其他中间件组
];

Remarque : le jeton CSRF changera à chaque requête, donc lorsque vous effectuez une requête Ajax, vous devez réinitialiser le champ X-CSRF-Token dans l'en-tête de la requête, sinon la vérification échouera.

Résumé

Laravel fournit aux développeurs des outils puissants et des mesures de sécurité pour prévenir les attaques CSRF. En utilisant des jetons CSRF, des en-têtes X-CSRF-Token et un middleware de vérification CSRF, les attaques CSRF peuvent être efficacement évitées et la sécurité des informations utilisateur protégée. Lorsque vous utilisez Laravel pour le développement Web, il est important de prêter attention aux problèmes de sécurité et de rechercher et d'appliquer activement diverses mesures de sécurité pour garantir que le site Web et les informations des utilisateurs ne sont pas attaqués et menacés.

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