So verwenden Sie Middleware zur Handhabung von Cross-Site Request Forgery (CSRF) im Slim-Framework
Einführung:
Cross-Site Request Forgery (CSRF) ist eine häufige Netzwerkangriffsmethode, bei der Angreifer die Authentifizierungsinformationen von Benutzern ausnutzen angemeldet, was den Benutzer dazu zwingt, böswillige Anfragen auszuführen. Um Anwendungen vor CSRF-Angriffen zu schützen, können wir Middleware im Slim-Framework verwenden, um CSRF-Probleme zu lösen. In diesem Artikel wird anhand entsprechender Codebeispiele erläutert, wie Sie Middleware im Slim-Framework verwenden, um CSRF-Angriffe zu verhindern.
Schritt 1: Slim-Framework installieren
Zuerst müssen wir das Slim-Framework lokal installieren. Mit Composer können Sie das Slim-Framework und die zugehörigen Abhängigkeiten einfach installieren. Führen Sie den folgenden Befehl im Terminal aus, um ein neues Slim-Projekt zu erstellen:
composer create-project slim/slim my-app
Schritt 2: CSRF-Middleware erstellen
Das Slim-Framework verfügt über einen integrierten Middleware-Mechanismus (Middleware), und wir können CSRF durch Erstellen einer Middleware verarbeiten. Erstellen Sie im Stammverzeichnis des Projekts ein neues Verzeichnis middlewares
und erstellen Sie in diesem Verzeichnis eine Datei mit dem Namen CsrfMiddleware.php
. Das Codebeispiel lautet wie folgt: 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();
Registrieren Sie die erstellte Middleware in den Anwendungseinstellungen von Slim. Öffnen Sie die Datei index.php
im Stammverzeichnis des Projekts und fügen Sie den folgenden Code zu den Anwendungseinstellungen hinzu:
<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>
Wo CSRF-Schutz erforderlich ist Im Formular müssen wir ein CSRF-Token hinzufügen. Dies kann erreicht werden, indem dem Formular ein ausgeblendetes Feld hinzugefügt wird. Hier ist ein Beispielcode:
$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; });
Auf der Serverseite müssen wir überprüfen, ob das CSRF-Token in der übermittelten Anfrage gültig ist. Hier ist der Code für eine Beispiel-Route-Handler-Funktion:
rrreee
Das obige ist der detaillierte Inhalt vonSo verwenden Sie Middleware zur Handhabung von Cross-Site Request Forgery (CSRF) im Slim-Framework. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!