>  기사  >  PHP 프레임워크  >  Laravel - CSRF 보호

Laravel - CSRF 보호

王林
王林원래의
2024-08-27 10:50:53497검색

CSRF는 웹 애플리케이션에 대한 교차 사이트 위조 공격을 나타냅니다. CSRF 공격은 인증된 시스템 사용자가 수행하는 무단 활동입니다. 따라서 많은 웹 애플리케이션이 이러한 공격에 취약합니다.

Laravel은 다음과 같은 방식으로 CSRF 보호를 제공합니다. −

Laravel에는 각 활성 사용자 세션에 대해 토큰을 생성하는 내장 CSRF 플러그인이 포함되어 있습니다. 이 토큰은 해당 인증된 사용자가 작업이나 요청을 보냈는지 확인합니다.

구현

Laravel에서 CSRF 보호 구현은 이 섹션에서 자세히 설명합니다. CSRF 보호를 추가로 진행하기 전에 다음 사항에 주목할 필요가 있습니다. −

  • CSRF는 웹 애플리케이션 내부에 선언된 HTML 형식 내에서 구현됩니다. Laravel의 CSRF 보호 미들웨어가 요청을 검증할 수 있도록 숨겨진 검증된 CSRF 토큰을 양식에 포함해야 합니다. 구문은 아래와 같습니다 −

<form method = "POST" action="/profile">
   {{ csrf_field() }}
   ...
</form>
  • JavaScript HTTP 라이브러리를 사용하여 JavaScript 기반 애플리케이션을 편리하게 구축할 수 있습니다. 여기에는 모든 나가는 요청에 대한 CSRF 토큰이 포함되어 있습니다.

  • 파일 이름은 resources/assets/js/bootstrap.js이며 모든 항목을 등록합니다. Laravel 애플리케이션용 토큰이며 Axios HTTP 라이브러리와 함께 csrf-token을 저장하는 meta 태그를 포함합니다.

CSRF 토큰이 없는 양식

다음 코드 줄을 고려하세요. 두 개의 매개변수(emailmessage)를 입력으로 사용하는 양식을 보여줍니다.

<form><form><br/>   <label> Email </label><br/>      <input type = "text" name = "email"/><br/>      <br/><br/>   <label> Message </label> <input type="text" name = "message"/><br/>   <input type = ”submit” name = ”submitButton” value = ”submit”><br/></form><!--입력--><!--입력--></form>

위 코드의 결과는 최종 사용자가 볼 수 있는 아래 양식입니다. −

Contact Form

위에 표시된 양식은 승인된 사용자의 모든 입력 정보를 허용합니다. 이로 인해 웹 애플리케이션이 다양한 공격에 취약해질 수 있습니다.

제출 버튼에는 컨트롤러 섹션의 기능이 포함되어 있습니다. postContact 함수는 해당 뷰에 대한 컨트롤러에서 사용됩니다. 아래에 표시되어 있습니다 −

public function postContact(Request $request) {
   return $request-> all();
}

양식에 CSRF 토큰이 포함되어 있지 않으므로 입력 매개변수로 공유되는 민감한 정보가 다양한 공격에 취약하다는 점에 유의하세요.

CSRF 토큰이 포함된 양식

다음 코드 줄은 CSRF 토큰을 사용하여 다시 디자인된 양식을 보여줍니다. −

<form method = ”post” >
   {{ csrf_field() }}
   <label> Email </label>
   <input type = "text" name = "email"/>
   <br/>
   <label> Message </label>
   <input type = "text" name = "message"/>
   <input type = ”submit” name = ”submitButton” value = ”submit”>
</form>

달성된 출력은 아래와 같이 토큰과 함께 JSON을 반환합니다. −

{
   "token": "ghfleifxDSUYEW9WE67877CXNVFJKL",
   "name": "TutorialsPoint",
   "email": "contact@tutorialspoint.com"
}

제출 버튼을 클릭하면 생성되는 CSRF 토큰입니다.

위 내용은 Laravel - CSRF 보호의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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