ホームページ >バックエンド開発 >PHPチュートリアル >CSRF保護によるLaravelのPOSTおよびPUTメソッドの419ステータスコードを解決する方法は?

CSRF保護によるLaravelのPOSTおよびPUTメソッドの419ステータスコードを解決する方法は?

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-18 20:35:311036ブラウズ

How to Resolve 419 Status Code for POST and PUT Methods in Laravel Due to CSRF Protection?

Laravel API が POST および PUT メソッドで 419 ステータス コードを返す

Laravel を使用して RESTful API を開発しようとすると、POST および PUT メソッドで 419 ステータス コードが発生する可能性があります。方法。この問題は、クロスサイト リクエスト フォージェリ (CSRF) 攻撃を防ぐことを目的とした Laravel の CSRF 保護に起因します。

根本原因

Laravel の web.php ルートは、デフォルトで CSRF トークンによって保護されています。 CSRF トークンは、リクエストが悪意のあるユーザーからのものではなく、正当なソースからのものであることを確認する方法です。 POST または PUT リクエストに正しい CSRF トークンが含まれていない場合、Laravel は 419 ステータス コードを返します。

解決策 1: CSRF 保護からルートを除外する

API に web.php ルートを使用している場合エンドポイントがある場合は、VerifyCsrfToken ミドルウェアの $excel プロパティにエンドポイントを追加することで、CSRF 保護から除外できます。

<code class="php">namespace App\Http\Middleware;

use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as BaseVerifier;

class VerifyCsrfToken extends BaseVerifier
{
    /**
     * The URIs that should be excluded from CSRF verification.
     *
     * @var array
     */
    protected $except = [
        'api/*', // Exclude all API routes from CSRF protection
    ];
}</code>

解決策 2: API ルートに api.php を使用する

Laravel バージョン 5.4 以降を使用する場合は、API ルートに api.php ファイルを使用することをお勧めします。 api.php で定義されたルートは、CSRF 保護から自動的に除外されます。

解決策 3: 特定のメソッドの CSRF 保護を無効にする

ルート グループ内の特定のメソッドに対して CSRF 保護を無効にできます。

<code class="php">Route::group(['middleware' => ['api', 'without_csrf_token']], function () {
    Route::post('/store', 'RestController@store');
    Route::put('/update/{id}', 'RestController@update');
});</code>

結論

ルートを CSRF 保護から除外するか、特定のメソッドに対して無効にすることで、419 ステータス コードの問題を解決できます。 CSRF 保護は、ユーザーが送信したフォームに対する重要なセキュリティ対策であるため、必要な場合にのみ無効にしてください。

以上がCSRF保護によるLaravelのPOSTおよびPUTメソッドの419ステータスコードを解決する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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