>  기사  >  백엔드 개발  >  CSRF 보호로 인해 Laravel의 POST 및 PUT 메서드에 대한 419 상태 코드를 해결하는 방법은 무엇입니까?

CSRF 보호로 인해 Laravel의 POST 및 PUT 메서드에 대한 419 상태 코드를 해결하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-10-18 20:35:31951검색

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 경로를 사용하는 경우 엔드포인트를 검증CsrfToken 미들웨어의 $Exception 속성에 추가하여 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.