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
É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(); } } }
步骤三:注册CSRF中间件
在Slim的应用程序设置中注册创建的中间件。打开项目的根目录下的index.php
$app = new SlimApp(); ... $app->add(new AppMiddlewaresCsrfMiddleware()); ... $app->run();
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>
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; });
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
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!