ホームページ  >  記事  >  バックエンド開発  >  Slim フレームワークでミドルウェアを使用してクロスサイト リクエスト フォージェリ (CSRF) を処理する方法

Slim フレームワークでミドルウェアを使用してクロスサイト リクエスト フォージェリ (CSRF) を処理する方法

PHPz
PHPzオリジナル
2023-07-28 15:13:28756ブラウズ

スリム フレームワークでミドルウェアを使用してクロスサイト リクエスト フォージェリ (CSRF) を処理する方法

はじめに:
クロスサイト リクエスト フォージェリ (CSRF) は、攻撃者が使用する一般的なネットワーク攻撃手法です。 Web サイトにログインする際のユーザーの認証情報を使用して、ユーザーに悪意のあるリクエストの実行を強制します。アプリケーションを CSRF 攻撃から保護するために、Slim フレームワークのミドルウェアを使用して CSRF 問題を処理できます。この記事では、Slim フレームワークでミドルウェアを使用して CSRF 攻撃を防ぐ方法を、対応するコード例とともに紹介します。

ステップ 1: Slim フレームワークをインストールする
まず、Slim フレームワークをローカルにインストールする必要があります。 Composer を使用すると、Slim フレームワークとその関連依存関係を簡単にインストールできます。ターミナルで次のコマンドを実行して、新しい Slim プロジェクトを作成します。

composer create-project slim/slim my-app

ステップ 2: CSRF ミドルウェアを作成する
Slim フレームワークにはミドルウェア (ミドルウェア) メカニズムが組み込まれており、次のようなミドルウェアを作成できます。 CSRFを扱います。プロジェクトのルート ディレクトリに、新しいディレクトリ 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();
        }
    }
}

ステップ 3: CSRF ミドルウェアの登録
作成したミドルウェアを Slim のアプリケーション設定に登録します。プロジェクトのルート ディレクトリにある index.php ファイルを開き、次のコードをアプリケーション設定に追加します。

$app = new SlimApp();
...
$app->add(new AppMiddlewaresCsrfMiddleware());
...
$app->run();

ステップ 4: CSRF トークンをフォーム
In に追加します。 CSRF 保護が必要なフォームでは、CSRF トークンを追加する必要があります。これは、フォームに隠しフィールドを追加することで実現できます。以下はサンプル コードです。

<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>

ステップ 5: CSRF トークンの有効性を確認する
サーバー側では、送信されたリクエストの CSRF トークンが有効かどうかを確認する必要があります。以下は、ルート プロセッサ関数の例のコードです。

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

概要:
Slim フレームワークのミドルウェア メカニズムを使用することで、アプリケーションに CSRF 保護を簡単に実装できます。 CSRF トークンを検証して処理する CSRF ミドルウェアを作成し、CSRF トークンをフォームに追加してユーザー リクエストを保護します。上記は、Slim フレームワークで CSRF を処理する方法とコード例です。この記事がお役に立てば幸いです!

以上がSlim フレームワークでミドルウェアを使用してクロスサイト リクエスト フォージェリ (CSRF) を処理する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。