Laravel은 전문 개발자와 초보자 모두에게 인기 있는 PHP 프레임워크입니다. Laravel 프레임워크는 크로스 사이트 요청 위조 공격을 방지하기 위해 CSRF 보호를 구현합니다. 그러나 경우에 따라 CSRF 보호를 제거해야 하는 경우가 있습니다. 이 문서에서는 Laravel에서 CSRF 보호를 제거하는 방법을 안내합니다.
사이트 간 요청 위조, 영어로 CSRF라고 약칭하는 것은 일반적인 웹 공격입니다. 공격자는 로그인된 상태의 피해자 신원을 이용해 악의적인 작업을 수행하기 위한 요청을 위조합니다. 이러한 공격을 방지하기 위해 라라벨은 웹 애플리케이션을 잘 보호할 수 있는 CSRF 보호 기능을 구현하고 있습니다.
Laravel에서 CSRF 보호 구현은 주로 다음 세 단계를 거칩니다.
2.1 CSRF 토큰 생성
HTML 형식에 csrf_field 명령어를 추가하면 이 명령어가 자동으로 생성됩니다. CSRF token 양식의 숨겨진 필드에 추가됩니다.
<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. Cross-site scripting 공격 보호
Cross-site scripting 공격을 방지하려면 "escape" 원칙을 따라야 합니다. 출력"을 하고 직접 출력하지 않습니다. 사용자가 제공한 데이터는 출력 전에 처리되어야 합니다. 예를 들어, HTML 특수 문자를 이스케이프하려면 htmlentities 또는 htmlspecialchars 함수를 사용하십시오.
위는 Laravel에서 CSRF 보호를 구현하는 방법입니다. 아래에서는 이 보호 기능을 제거하는 방법을 설명합니다.
웹 애플리케이션에 CSRF 보호가 필요하지 않은 경우 Laravel에서 CSRF 보호를 제거할 수도 있습니다. 아래에서는 CSRF 보호를 제거하는 두 가지 방법을 소개합니다.
3.1. CSRF 보호 미들웨어 끄기
기본적으로 모든 Laravel Post 요청은 CSRF 검증을 거칩니다. 이 확인을 제거하려면 미들웨어에서 CSRF 보호 미들웨어를 제거하면 됩니다. 구체적인 방법은 다음과 같습니다.
app/Http/Kernel.php 파일을 열고 $middlewareGroups 배열에서 웹 미들웨어 그룹을 찾은 다음 배열에서 ['IlluminateFoundationHttpMiddlewareVerifyCsrfToken'] 미들웨어를 삭제합니다.
protected $middlewareGroups = [ 'web' => [ AppHttpMiddlewareEncryptCookies::class, // IlluminateSessionMiddlewareAuthenticateSession::class, // IlluminateRoutingMiddlewareSubstituteBindings::class, // IlluminateFoundationHttpMiddlewareVerifyCsrfToken::class, ], 'api' => [ 'throttle:60,1', 'auth:api', ], ];
현재 모든 게시물 요청은 CSRF 보호 확인을 거치지 않습니다. CSRF 보호를 제거할 수 있지만 이는 특정 보안 위험을 의미하기도 합니다. 따라서 엄격한 테스트 환경에서만 활성화하는 것이 좋습니다.
3.2. CSRF 보호를 수동으로 무시
CSRF 보호 미들웨어를 전체적으로 끄면 특정 경로나 컨트롤러에서 CSRF 보호 확인을 수동으로 무시할 수 있습니다. 구체적인 방법은 다음과 같습니다.
릴리스해야 하는 라우트나 컨트롤러 메서드에서는 WithoutMiddleware 메서드를 사용하세요.
Route::post('route', function () { // })->withoutMiddleware([IlluminateFoundationHttpMiddlewareVerifyCsrfToken::class]);
이 방법은 특별한 경우에 사용할 수 있지만, 이 방법을 모두 사용하는 것은 권장되지 않습니다. 경로.
요약하자면, Laravel에서 CSRF 보호를 구현하는 것은 좋은 보안 조치입니다. 불필요할 경우 CSRF 보호를 제거하는 것은 권장되지 않습니다. 필요한 경우 위의 방법을 통해 CSRF 보호를 제거할 수 있습니다. 물론, 실제 프로젝트 개발에서는 실제 상황에 따라 주의하여 사용하시기 바랍니다.
위 내용은 laravel csrf 제거의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!