ホームページ >バックエンド開発 >PHPチュートリアル >Lithe の CSRF を使用してアプリケーションを保護する

Lithe の CSRF を使用してアプリケーションを保護する

Barbara Streisand
Barbara Streisandオリジナル
2024-11-11 01:36:03921ブラウズ

Protecting Your Application with CSRF in Lithe

このチュートリアルでは、Lithe に CSRF (クロスサイト リクエスト フォージェリ) 保護を実装して、アプリケーションに対して望ましくないリクエストが行われないようにする方法を学びます。このガイドは初心者向けに作成されているため、ステップごとに説明していきます!


CSRFとは何ですか?

CSRF (クロスサイト リクエスト フォージェリ) は、ユーザーが認証されている Web サイト上で不正なアクションを実行するように騙される攻撃の一種です。攻撃者はデータを操作したり、制限された領域にアクセスしたりできるため、この攻撃は危険です。これを防ぐために、疑わしいリクエストの処理を停止するセキュリティ層を追加します。


チュートリアルの構造

  1. しなやかなセットアップ
  2. CSRF ミドルウェアをインストールします
  3. バックエンドに CSRF トークンを追加します
  4. バックエンドでトークンを検証します
  5. フロントエンドからトークンを送信します
  6. CSRF 保護のテスト

始めましょう!


ステップ 1: Lithe をセットアップする

まだ Lithe をセットアップしていない場合は、以下のコマンドを使用してフレームワークをインストールすることから始めます:

composer create-project lithephp/lithephp project-name
cd project-name

これにより、Lithe を使用したプロジェクトの基本構造が作成されます。


ステップ 2: CSRF ミドルウェアのインストール

CSRF ミドルウェアは、CSRF トークンの生成と検証に役立ちます。インストールするには、プロジェクト内のターミナルで次のコマンドを実行します:

composer require lithemod/csrf

ステップ 3: CSRF ミドルウェアの構成

次に、CSRF ミドルウェアを使用したいことを Lithe に伝える必要があります。メイン ファイル src/App.php を開き、CSRF ミドルウェアを追加します。

use Lithe\Middleware\Security\csrf;
use function Lithe\Orbis\Http\Router\router;

$app = new \Lithe\App;

// Configure the CSRF middleware with automatic checking in the request body
$app->use(csrf([
    'expire' => 600, // Token expiration after 10 minutes
    'checkBody' => true, // Enables automatic checking in the body
    'bodyMethods' => ['POST', 'PUT', 'DELETE'], // Defines the methods for checking CSRF in the body
]));

$app->use(router(__DIR__ . '/routes/web'));

$app->listen();

これにより、CSRF ミドルウェアがアプリケーションでアクティブになり、保護が必要なすべてのリクエストに有効なトークンが含まれている必要があります。


ステップ 4: CSRF トークンの生成

CSRF 保護を使用するには、一意のトークンを生成し、リクエストに含める必要があります。 CSRF トークンを自動的に含むフォームを送信するルートを作成します。

  1. src/routes/web.php という名前のファイルを作成し、CSRF トークンのフィールドを含むフォーム ルートを追加します。
use Lithe\Http\{Request, Response};
use function Lithe\Orbis\Http\Router\get;

get('/form', function (Request $req, Response $res) {
    // Generate the CSRF token field
    $tokenField = $req->csrf->getTokenField();

    // Send the HTML with the token included in the form
    return $res->send("
        <form method='POST' action='/submit'>
            $tokenField
            <input type='text' name='data' placeholder='Type something' required>
            <button type='submit'>Submit</button>
        </form>
    ");
});
  1. このルートは、CSRF トークン フィールドを含むフォームを作成します。このフィールドは、Lithe がリクエストの信頼性を確認するために必須です。

ステップ 5: バックエンドでのトークンの検証

フォームが送信されると、Lithe はトークンが有効かどうかを自動的にチェックします。次に、フォームを受信して​​処理するルートを作成しましょう。

  1. 同じファイル src/routes/web.php に、フォーム送信を処理するルートを追加します。
composer create-project lithephp/lithephp project-name
cd project-name

トークンが無効または欠落している場合、Lithe は自動的にリクエストをブロックし、エラーを返します。


ステップ 6: CSRF トークンを使用してリクエストを送信する

フロントエンドでは、POST リクエスト (または別のデータ変更メソッド) を送信する必要がある場合は常に、ミドルウェアの構成方法に応じて、リクエストの本文またはヘッダーに CSRF トークンを含めることが重要です。

JavaScript フェッチ API の例

JavaScript を使用している場合は、フェッチ リクエストでトークンを送信する方法の例を次に示します。

composer require lithemod/csrf

ステップ 7: CSRF 保護のテスト

  1. ブラウザで /form ルートにアクセスします。 CSRF トークンが含まれたフォームが表示されます。
  2. フィールドに記入してフォームを送信します。
  3. すべてが機能している場合は、送信されたデータとともに成功メッセージが表示されます。

要約と最終的な考慮事項

このチュートリアルでは次のことを学びました:

  • CSRF とは何か、なぜそれが重要なのか。
  • Lithe で CSRF ミドルウェアをセットアップする方法。
  • バックエンドで CSRF トークンを生成および検証する方法。
  • フォームおよび AJAX リクエストで CSRF トークンを送信する方法。

この保護を実装すると、CSRF 攻撃に対するアプリケーションの安全性が高まり、ユーザーのデータの整合性の保護に役立ちます。

さらに詳しい情報については、Lithe の公式ドキュメントをご覧ください。

以上がLithe の CSRF を使用してアプリケーションを保護するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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