現在の位置: ホーム> 最新記事一覧> ミドルウェアを使用して、スリムなフレームワークでのクロスサイトリクエストフォーファリー(CSRF)攻撃を防ぐ方法

ミドルウェアを使用して、スリムなフレームワークでのクロスサイトリクエストフォーファリー(CSRF)攻撃を防ぐ方法

M66 2025-06-21

ミドルウェアを使用して、スリムなフレームワークでCSRF攻撃を防ぎます

クロスサイトリクエスト偽造(CSRF)は、サイバー攻撃の一般的な方法です。攻撃者は、ログインしたWebサイトでユーザー認証情報を活用することにより、ユーザーに悪意のあるリクエストを開始するように強制します。 CSRF攻撃を効果的に防ぐために、Slim Frameworkはミドルウェアを使用した保護のメカニズムを提供します。この記事では、インストール手順、ミドルウェアの作成、アプリケーションの構成、CSRFトークンの検証など、スリムフレームワークにCSRF保護を実装する方法に関する詳細な説明を提供します。

ステップ1:スリムフレームワークをインストールします

まず、Composerを介してSlim Frameworkをインストールする必要があります。ターミナルで次のコマンドを実行して、新しいスリムプロジェクトを作成します。

Composer Create-Project Slim/Slim My-App

ステップ2:CSRFミドルウェアを作成します

スリムなフレームワークでは、ミドルウェアメカニズムを介してCSRF保護を処理できます。これを行うには、 csrfmiddleware.phpという名前のミドルウェアファイルを作成する必要があります。まず、Project Root DirectoryにMiddleWaresというディレクトリを作成し、 CSRFMIDDLEWARE.phpファイルを作成します。

CSRFミドルウェアのコード例は次のとおりです。

<?php
namespace App\Middlewares;

class CsrfMiddleware extends SlimMiddlewareAntiCsrf
{
    public function call()
    {
        $this-> app-> hook( &#39;slim.before&#39;、[$ this、 &#39;check&#39;]);
        $ this-> next-> call();
    }

    public function valimatestorage()
    {
        if(!$ this-> app-> view() - > getData( &#39;csrf_key&#39;)||
            !$ this-> app-> view() - > getData( &#39;csrf_value&#39;)){
            $ this-> app-> getlog() - > error( &#39;csrf検証エラー:csrfキーおよび/またはvalue&#39;);
            $ this-> app-> pass();
        }
    }
}

ステップ3:CSRFミドルウェアを登録します

次に、スリムアプリケーションで作成したばかりのCSRFミドルウェアを登録する必要があります。次のコードをindex.phpファイルに追加して、ミドルウェアを登録します。

$ app = new Slimapp();
...
$ app-> add(new App \ MiddleWares \ csrfmiddleware());
...
$ app-> run();

ステップ4:CSRFトークンを追加して形成します

フォームをCSRF攻撃から保護するには、フォームに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( &#39;/submit&#39;、function($ request、$ response){
    $ data = $ request-> getParsedBody(); //リクエストパラメーターを得るする// csrfトークン$ csrf_key = $ data [&#39;csrf_key&#39;];
    $ csrf_value = $ data [&#39;csrf_value&#39;];

    if(!$ app-> csrf-> check($ csrf_key、$ csrf_value)){
        // csrfトークン検証失敗した$ response-> getbody() - > write( &#39;csrf validation failed&#39;);
        $ response-> wordstatus(403)を戻るします。
    }

    //プロセスフォーム送信// ...

    $ response-> getBody() - > write( &#39;フォームが普通に送信された&#39;);
    戻る信$応答。
});

要約します

スリムフレームワークでミドルウェアを使用することにより、CSRF保護を簡単に実装できます。まず、CSRFミドルウェアを作成してトークンを検証および処理し、次にユーザーリクエストのセキュリティを確保するためにCSRFトークンをフォームに追加します。このようにして、スリムなフレームワークは、CSRF攻撃を効果的に防止し、アプリケーションのセキュリティを強化することができます。