ホームページ  >  記事  >  PHPフレームワーク  >  laravelはトークン検証をオフにします

laravelはトークン検証をオフにします

PHPz
PHPzオリジナル
2023-05-29 12:55:07824ブラウズ

Laravel は、開発者が Web アプリケーションを迅速かつ効率的に構築できるようにする多くの便利な機能とツールを提供する人気の PHP フレームワークです。重要な機能の 1 つはトークン検証です。トークン検証は、ユーザー情報が不正にアクセスされたり変更されたりしないことを保証するために使用されるセキュリティ メカニズムです。ただし、場合によっては、開発者がトークン検証を一時的に無効にする必要がある場合があります。この記事では、Laravelでトークン検証をオフにする方法を紹介します。

1. トークン検証をオフにする理由は何ですか?

Laravel では、トークン検証はデフォルトで有効になっています。ユーザーがWebアプリケーションを通じてログインまたは登録すると、Laravelはユーザーの身元を確認し、悪意のある攻撃を防ぐためにトークンを自動的に生成します。これにより、Web アプリケーションのセキュリティが向上し、潜在的なリスクが軽減されます。

ただし、場合によっては、開発者がトークン検証を一時的に無効にする必要がある場合があります。たとえば、開発者がテストまたはデバッグを行っている場合、トークン検証をオフにすると、開発をスピードアップし効率を高めることができます。さらに、場合によっては、サードパーティ API を呼び出したり、他のシステムを統合したりするときに、トークン検証を一時的に無効にする必要があります。

2. トークン検証をオフにするにはどうすればよいですか?

Laravel では、トークン検証をオフにすることは 2 つの方法で実現できます。

  1. ミドルウェアでトークン検証をオフにする

ミドルウェアは Laravel の非常に強力な機能であり、HTTP リクエストとレスポンスの処理に使用できます。 Laravelでは、トークン検証はミドルウェアに実装されています。したがって、トークン検証の動作はミドルウェアで変更できます。

トークン検証をオフにするには、AppHttpMiddlewareVerifyCsrfToken.php ファイルを編集して次のコードに変換します。

<?php

namespace AppHttpMiddleware;

use IlluminateFoundationHttpMiddlewareVerifyCsrfToken as Middleware;

class VerifyCsrfToken extends Middleware
{
    /**
     * The URIs that should be excluded from CSRF verification.
     *
     * @var array
     */
    protected $except = [
        //
    ];

    /**
     * Determine if the session and input CSRF tokens match.
     *
     * @param  IlluminateHttpRequest  $request
     * @return bool
     */
    protected function tokensMatch($request)
    {
        return true;
    }
}

上記のコードでは、tokensMatch( ) 関数。 tokensMatch() 関数は、入力されたトークンがセッション内のトークンと一致するかどうかを比較するために使用される関数です。 true を返すと、トークン検証が無効になります。

この方法は完全に安全ではないことに注意してください。トークン検証をオフにすると、Web アプリケーションが CSRF 攻撃に対して脆弱になります。したがって、テストと開発中にのみ使用することをお勧めします。

  1. ルーティングでトークン検証をオフにする

トークン検証をオフにするもう 1 つの方法は、ルーティングで withoutMiddleware() 関数を使用することです。この機能は、トークン検証ミドルウェアなどの指定されたミドルウェアをスキップするのに役立ちます。

withoutMiddleware() 関数を使用するには、ルーティングを通じて指定されたコントローラーと関数を呼び出す必要があります。例:

Route::get('/example', 'ExampleController@exampleFunction')->withoutMiddleware(['auth', 'csrf']);

上記のコードでは、withoutMiddleware() 関数を使用して、ルートからトークン検証ミドルウェアを削除します。これにより、トークンなしで HTTP リクエストを使用できるようになります。

この方法にはセキュリティ上の脆弱性もあるので、必要に応じて使用することをお勧めします。

3. トークン検証を有効にする

テストを完了するかトークン検証を無効にした後、Web アプリケーションのセキュリティを確保するためにトークン検証を有効にすることをお勧めします。同じ方法を使用してトークン検証を有効にすることができます。変更したコードを削除するだけです。

Laravel では、トークン検証を有効にするのは非常に簡単です。 VerifyCsrfToken ミドルウェアが登録され、無効になっていないことを確認してください。

<?php

namespace AppHttp;

use IlluminateFoundationHttpKernel as HttpKernel;

class Kernel extends HttpKernel
{
    /**
     * The application's global HTTP middleware stack.
     *
     * @var array
     */
    protected $middleware = [
        IlluminateFoundationHttpMiddlewareCheckForMaintenanceMode::class,
        IlluminateFoundationHttpMiddlewareValidatePostSize::class,
        AppHttpMiddlewareTrimStrings::class,
        IlluminateFoundationHttpMiddlewareConvertEmptyStringsToNull::class,
    ];

    /**
     * The application's route middleware.
     *
     * @var array
     */
    protected $routeMiddleware = [
        'auth' => AppHttpMiddlewareAuthenticate::class,
        'auth.basic' => IlluminateAuthMiddlewareAuthenticateWithBasicAuth::class,
        'bindings' => IlluminateRoutingMiddlewareSubstituteBindings::class,
        'can' => IlluminateAuthMiddlewareAuthorize::class,
        'guest' => AppHttpMiddlewareRedirectIfAuthenticated::class,
        'signed' => IlluminateRoutingMiddlewareValidateSignature::class,
        'throttle' => IlluminateRoutingMiddlewareThrottleRequests::class,
        'verified' => IlluminateAuthMiddlewareEnsureEmailIsVerified::class,
        'csrf' => AppHttpMiddlewareVerifyCsrfToken::class,
    ];
}

上記のコードでは、VerifyCsrfToken ミドルウェアが「csrf」ミドルウェアとして登録されていることがわかります。これは、デフォルトで動作することを意味します。

4. 結論

トークン検証は Laravel の非常に重要なセキュリティ メカニズムであり、悪意のある攻撃を防ぎ、ユーザー データのセキュリティを保護できます。ただし、開発をスピードアップして効率を高めるために、トークン検証を一時的に無効にする必要がある場合があります。この記事では、Laravel でトークン検証をオフにする方法を紹介し、トークン検証をオフにすることで発生する可能性のあるセキュリティ リスクについて説明します。この機能は、開発およびテスト中にのみ使用することをお勧めします。運用環境では、Web アプリケーションのセキュリティを確保するために、トークン検証をオンにしておく必要があります。

以上がlaravelはトークン検証をオフにしますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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