Comment utiliser un middleware pour gérer la falsification de requêtes intersites (CSRF) dans le framework Slim

PHPz
Libérer: 2023-07-28 16:12:01
original
814 Les gens l'ont consulté

Comment utiliser un middleware pour gérer la falsification de requêtes intersites (CSRF) dans le framework Slim

Introduction :
La falsification de requêtes intersites (CSRF) est une méthode d'attaque réseau courante. Les attaquants profitent des informations d'authentification des utilisateurs lorsqu'un site Web est visité. connecté, obligeant l'utilisateur à effectuer des requêtes malveillantes. Pour protéger l'application contre les attaques CSRF, nous pouvons utiliser un middleware dans le framework Slim pour gérer les problèmes CSRF. Cet article explique comment utiliser le middleware dans le framework Slim pour empêcher les attaques CSRF, avec des exemples de code correspondants.

Étape 1 : Installer le framework Slim
Tout d'abord, nous devons installer le framework Slim localement. En utilisant Composer, vous pouvez facilement installer le framework Slim et ses dépendances associées. Exécutez la commande suivante dans le terminal pour créer un nouveau projet Slim :

composer create-project slim/slim my-app
Copier après la connexion

Étape 2 : Créer un middleware CSRF
Le framework Slim dispose d'un mécanisme de middleware intégré (Middleware), et nous pouvons gérer CSRF en créant un middleware. Dans le répertoire racine du projet, créez un nouveau répertoire middlewares, et créez un fichier nommé CsrfMiddleware.php dans ce répertoire. L'exemple de code est le suivant : middlewares,并在该目录下创建一个名为CsrfMiddleware.php的文件。代码示例如下:

<?php
namespace AppMiddlewares;

class CsrfMiddleware extends SlimMiddlewareAntiCsrf
{
    public function call()
    {
        $this->app->hook('slim.before', [$this, 'check']);
        $this->next->call();
    }

    public function validateStorage()
    {
        if (!$this->app->view()->getData('csrf_key') ||
            !$this->app->view()->getData('csrf_value')) {
            $this->app->getLog()->error('CSRF validation error: missing CSRF key and/or value');
            $this->app->pass();
        }
    }
}
Copier après la connexion

步骤三:注册CSRF中间件
在Slim的应用程序设置中注册创建的中间件。打开项目的根目录下的index.php

$app = new SlimApp();
...
$app->add(new AppMiddlewaresCsrfMiddleware());
...
$app->run();
Copier après la connexion

Étape 3 : Enregistrez le middleware CSRF

Enregistrez le middleware créé dans les paramètres de l'application de Slim. Ouvrez le fichier index.php dans le répertoire racine du projet et ajoutez le code suivant aux paramètres de l'application :

<form action="/submit" method="post">
    <input type="hidden" name="csrf_key" value="{{ csrf_key }}">
    <input type="hidden" name="csrf_value" value="{{ csrf_value }}">
    <!-- 其他表单字段 -->
    <button type="submit">提交</button>
</form>
Copier après la connexion

Étape 4 : Ajoutez le jeton CSRF au formulaire

Où la protection CSRF est requise Dans le formulaire, nous devons ajouter un jeton CSRF. Ceci peut être réalisé en ajoutant un champ caché au formulaire. Voici un exemple de code :

$app->post('/submit', function ($request, $response) {
    $data = $request->getParsedBody(); // 获取请求参数

    // 检查CSRF令牌
    $csrf_key = $data['csrf_key'];
    $csrf_value = $data['csrf_value'];
    if (!$app->csrf->check($csrf_key, $csrf_value)) {
        // CSRF令牌验证失败
        $response->getBody()->write('CSRF validation failed');
        return $response->withStatus(403);
    }

    // 处理表单提交
    // ...

    $response->getBody()->write('Form submitted successfully');
    return $response;
});
Copier après la connexion
Cinquième étape : Vérifiez la validité du jeton CSRF

Côté serveur, nous devons vérifier si le jeton CSRF dans la demande soumise est valide. Voici le code d'un exemple de fonction de gestionnaire de route :
rrreee

Résumé : 🎜 En utilisant le mécanisme middleware du framework Slim, nous pouvons facilement implémenter la protection CSRF dans nos applications. Créez un middleware CSRF pour valider et gérer les jetons CSRF, puis ajoutez le jeton CSRF au formulaire pour sécuriser les demandes des utilisateurs. Ce qui précède est la méthode et l'exemple de code pour gérer CSRF dans le framework Slim. J'espère que cet article vous aidera ! 🎜

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!

Étiquettes associées:
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