"입니다."/> "입니다.">

>PHP 프레임워크 >Laravel >Laravel의 csrf 공격에 대한 솔루션

Laravel의 csrf 공격에 대한 솔루션

WBOY
WBOY원래의
2022-06-21 16:07:533536검색

해결책: 1. Laravel을 사용하여 각 사용자 세션에 대해 "CSRF 토큰"을 자동으로 생성합니다. 이 토큰은 로그인한 사용자와 요청자가 동일한 사람인지 확인하는 데 사용할 수 있습니다. 토큰 값을 얻으려면 전역 도움말 기능인 "csrf_token"을 사용하세요. 구문은 "<...value php="" echo="">"입니다. .

Laravel의 csrf 공격에 대한 솔루션

이 기사의 운영 환경: Windows 10 시스템, Laravel 버전 9, Dell G3 컴퓨터.

laravel의 csrf 공격에 대한 솔루션

CSRF는 Cross-site request forgery의 영어 약어입니다.

Laravel 프레임워크에서 CSRF 공격을 피하는 것은 매우 간단합니다.

1 Laravel은 자동으로 각 사용자 세션에 대한 솔루션을 제공합니다. 로그인한 사용자와 요청자가 동일한 사람인지 확인하는 데 사용할 수 있는 CSRF 토큰. 그렇지 않으면 요청이 실패합니다. (원칙은 인증코드와 동일합니다.)

2. Laravel은 토큰 값을 얻기 위한 전역 도우미 함수 csrf_token을 제공하므로 보기 제출 양식에 다음 HTML 코드만 추가하면 토큰을 가져올 수 있습니다. request:

<input type="hidden" name="_token" value="<?php echo csrf_token(); ?>">

Laravel에서 CSRF 공격을 피하는 방법

사례: 사례를 통해 CSRF 메커니즘 검증 구현
1. 양식 표시(get)용 경로와 요청 처리(post)용 경로 두 개를 만듭니다.

Route::get('test6','Home\TestController@test6');Route::post('test7','Home\TestController@test7');

2. 요구사항 생성 Method

	 public function test6(){
        return view('home.test.test6');
     }
     public function test7()
     {
         return "请求提交成功";
     }

3. 필요한 간단한 양식을 생성합니다

Laravel의 csrf 공격에 대한 솔루션

4. 효과 제출(오류 페이지)

Laravel의 csrf 공격에 대한 솔루션

결론: 방금 사례를 통해 csrf 검증이 완료되었음을 알 수 있습니다. laravel의 메커니즘은 기본적으로 활성화되어 있습니다.

5. 오류 문제 해결(csrf 검증 통과 방법)
해결책: csrf에 필요한 토큰 값을 가져와서 request


    用户名:
         {{csrf_field()}}     

와 함께 후속 메소드에 전달합니다. csrf_token 메소드 단순화: {{csrf_field( )}}

특정 표현 형식:

Laravel의 csrf 공격에 대한 솔루션

둘의 차이점:
Csrf_token은 토큰의 값만 출력합니다.
Csrf_field는 전체 입력 숨겨진 필드를 출력합니다.

나중에 사용할 때 선택하는 방법: 대부분의 경우 경우에는 상황 선택을 스스로 결정할 수 있습니다. 그러나 개발자가 선택할 수 있는 권한이 없고 csrf_token을 사용해야 하는 상황이 발생합니다. 이 경우 비동기 양식 제출 방법이 사용됩니다.

CSRF 검증에서 예외 경로 제외

데이터를 얻기 위해 타사 API에 대한 요청과 같이 모든 요청이 CSRF 공격을 피할 필요는 없습니다.
제외할 요청 URL을 검증CsrfToken(app/Http/Middleware/VerifyCsrfToken.php) 미들웨어의 $just 속성 배열에 추가할 수 있습니다.

구성을 작성하여 예외 설정:
단일 경로 제외 작성 방법

 'home.test.test6',

Multiple 요소는 ","로 구분되며 배열 작성 방법을 따릅니다.

'home.test.test6','home.test.test7'

모든 경로를 제외하고 csrf를 사용해야 하는 경우 다음과 같이 작성할 수 있습니다.

'*'

[관련 권장 사항: laravel 비디오 튜토리얼]

위 내용은 Laravel의 csrf 공격에 대한 솔루션의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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