Laravel의 csrf 공격에 대한 솔루션

WBOY
풀어 주다: 2022-06-21 16:07:53
원래의
3495명이 탐색했습니다.

해결책: 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(&#39;test6&#39;,&#39;Home\TestController@test6&#39;);Route::post(&#39;test7&#39;,&#39;Home\TestController@test7&#39;);
로그인 후 복사

2. 요구사항 생성 Method

	 public function test6(){
        return view(&#39;home.test.test6&#39;);
     }
     public function test7()
     {
         return "请求提交成功";
     }
로그인 후 복사

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

Laravel의 csrf 공격에 대한 솔루션

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

Laravel의 csrf 공격에 대한 솔루션

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

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

<form action="/home/test/test7" method="post">
    用户名:<input type="text" name="username"><br>
    <input type="hidden" name="_token" value="{{csrf_token()}}">
    {{csrf_field()}}
    <input type="submit" value="提交"></form>
로그인 후 복사

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

특정 표현 형식:

Laravel의 csrf 공격에 대한 솔루션

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

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

CSRF 검증에서 예외 경로 제외

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

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

 &#39;home.test.test6&#39;,
로그인 후 복사

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

&#39;home.test.test6&#39;,&#39;home.test.test7&#39;
로그인 후 복사

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

&#39;*&#39;
로그인 후 복사

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

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

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!