ホームページ  >  記事  >  PHPフレームワーク  >  laravelはcsrfを削除します

laravelはcsrfを削除します

WBOY
WBOYオリジナル
2023-05-29 09:57:07949ブラウズ

Laravel は、プロの開発者と初心者の間で同様に人気のある PHP フレームワークです。 Laravel フレームワークは、クロスサイト リクエスト フォージェリ攻撃を防ぐために CSRF 保護を実装しています。ただし、場合によっては CSRF 保護を削除する必要がある場合があるため、この記事では Laravel で CSRF 保護を削除する方法を説明します。

  1. CSRF 保護とは

クロスサイト リクエスト フォージェリ (英語の CSRF の略称) は、一般的な Web 攻撃です。攻撃者は、ログイン状態の被害者の ID を使用してリクエストを偽造し、悪意のある操作を実行します。この種の攻撃を防ぐために、Laravel は Web アプリケーションをしっかり保護できる CSRF 保護機能を実装しています。

  1. Laravel での CSRF 保護の実装

Laravel での CSRF 保護の実装には、主に次の 3 つの手順が含まれます:

2.1. CSRF トークンの生成

csrf_field ディレクティブを HTML フォームに追加します。このディレクティブは、CSRF トークンを自動的に生成し、フォームの非表示フィールドに追加します。

<form>
@csrf
<input type="text" name="name">
<input type="submit" value="Submit">
</form>

2.2. CSRF トークンの検証

バックエンドで、Laravel は要求された CSRF トークンが正当であるかどうかを検証します。不正な場合はエラーメッセージが返されます。 Laravel 5.6 以降のバージョンでは、CSRF 保護ミドルウェアがデフォルトで追加され、すべての Post リクエストは CSRF 検証を受けます。リクエストに CSRF トークンが正しく含まれていない場合は、次のエラー メッセージが表示されます:

TokenMismatchException in VerifyCsrfToken.php line 68:

2.3. クロスサイト スクリプティング攻撃からの保護

クロスサイト スクリプティング攻撃を防ぐには、 「出力」をエスケープする原則に従い、ユーザーが提供したデータを直接出力せず、出力する前に処理する必要があります。たとえば、htmlentities 関数または htmlspecialchars 関数を使用して、HTML 特殊文字をエスケープします。

上記は、Laravel で CSRF 保護を実装する方法です。以下では、この保護を解除する方法を説明します。

  1. Laravel で CSRF 保護を削除する方法

Web アプリケーションに CSRF 保護が必要ない場合は、Laravel で CSRF 保護を削除することもできます。以下では、CSRF保護を解除する2つの方法を紹介します。

3.1. CSRF 保護ミドルウェアをオフにする

デフォルトでは、すべての Laravel Post リクエストは CSRF 検証を受けます。この検証を削除したい場合は、ミドルウェアから CSRF 保護ミドルウェアを削除できます。具体的な方法は次のとおりです。

app/Http/Kernel.php ファイルを開き、$middlewareGroups 配列で Web ミドルウェア グループを見つけ、配列から ['IlluminateFoundationHttpMiddlewareVerifyCsrfToken'] ミドルウェアを削除します。

protected $middlewareGroups = [
    'web' => [
        AppHttpMiddlewareEncryptCookies::class,
        // IlluminateSessionMiddlewareAuthenticateSession::class,
        // IlluminateRoutingMiddlewareSubstituteBindings::class,
        // IlluminateFoundationHttpMiddlewareVerifyCsrfToken::class,
    ],

    'api' => [
        'throttle:60,1',
        'auth:api',
    ],
];

現時点では、すべての Post リクエストは CSRF 保護検証を受けません。 CSRF 保護は削除できますが、これには一定のセキュリティ リスクも伴います。したがって、厳密なテスト環境でのみ有効にすることをお勧めします。

3.2. CSRF 保護を手動で無視する

CSRF 保護ミドルウェアをグローバルにオフにすると、特定のルートまたはコントローラーでの CSRF 保護の検証を手動で無視できます。具体的な方法は次のとおりです。

解放する必要があるルートまたはコントローラー メソッドで、withoutMiddleware メソッドを使用します。

Route::post('route', function () {
    //
})->withoutMiddleware([IlluminateFoundationHttpMiddlewareVerifyCsrfToken::class]);

このメソッドは、いくつかの特殊な場合に使用できますが、すべてのルーターで推奨されるわけではありません。すべてのルーターがこの方法を使用します。

要約すると、Laravel に CSRF 保護を実装することは優れたセキュリティ対策であり、不要な場合に CSRF 保護を削除することはお勧めできません。必要に応じて、上記の方法で CSRF 保護を削除できます。もちろん、実際のプロジェクト開発においては、実情に応じて慎重に使用してください。

以上がlaravelはcsrfを削除しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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