スリム フレームワークでミドルウェアを使用してクロスサイト リクエスト フォージェリ (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 サイトの他の関連記事を参照してください。