Heim  >  Artikel  >  Backend-Entwicklung  >  So verwenden Sie Middleware zur Handhabung von Cross-Site Request Forgery (CSRF) im Slim-Framework

So verwenden Sie Middleware zur Handhabung von Cross-Site Request Forgery (CSRF) im Slim-Framework

PHPz
PHPzOriginal
2023-07-28 15:13:28814Durchsuche

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();

Schritt 3: CSRF-Middleware registrieren

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>

Schritt 4: Fügen Sie das CSRF-Token zum Formular hinzu

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;
});

Schritt fünf: Überprüfen Sie die Gültigkeit des CSRF-Tokens

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

Zusammenfassung: 🎜 Durch die Verwendung des Middleware-Mechanismus im Slim-Framework können wir den CSRF-Schutz problemlos in unseren Anwendungen implementieren. Erstellen Sie eine CSRF-Middleware zur Validierung und Verarbeitung von CSRF-Tokens und fügen Sie dann das CSRF-Token zum Formular hinzu, um Benutzeranfragen zu sichern. Das Obige ist die Methode und das Codebeispiel für die Handhabung von CSRF im Slim-Framework. Ich hoffe, dieser Artikel hilft Ihnen! 🎜

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn