Laravel을 사용하면 사이트 간 요청 위조 (CSRF) 공격으로부터 응용 프로그램을 보호하기가 쉽습니다. 사이트 간 요청 위조는 인증 된 사용자를 대신하여 권한이 부여되지 않은 명령이 수행되는 악의적 인 공격 유형입니다.
Laravel은 응용 프로그램에서 관리하는 각 활성 사용자 세션에 대해 CSRF "토큰"을 자동으로 생성합니다. 이 토큰은 인증 된 사용자가 실제로 응용 프로그램에 요청하는 것을 확인하는 데 사용됩니다.
응용 프로그램에서 HTML 양식을 정의 할 때마다 CSRF 보호 미들웨어가 요청을 검증 할 수 있도록 양식에 숨겨진 CSRF 토큰 필드를 포함시켜야합니다. 당신은 토큰 필드를 생성하는 csrf_field 도우미를 사용할 수 있습니다 :
<form method="POST" action="/profile">
{{ csrf_field() }}
...
</form>
후 매개 변수로 CSRF 토큰에 대한 검사뿐만 아니라, VerifyCsrfToken 미들웨어는 또한 X-CSRF 토큰 요청 헤더를 확인합니다. 당신은, 예를 들어, HTML 메타 태그에 토큰을 저장할 수 :
<meta name="csrf-token" content="{{ csrf_token() }}">
을 그런 다음 메타 태그를 만든 후에, 당신은 jQuery를 같은 라이브러리가 자동으로 모든 요청 헤더에 토큰을 추가 지시 할 수 있습니다. 이것은 당신의 AJAX 기반 응용 프로그램을 간단하고 편리하게 CSRF 보호 기능을 제공 :
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
Reference
참고 : 파일 VerifyCsrfToken.php
을 열고처럼 URL을 통과, CSRF 검증에서 일부 URI의이 project/app/Http/Middleware
로 이동 제외하려면 :
protected $except = [
'/api/authuser',
];
이 배열로 전달 된 URL은 CSR의 CSR 검증에서 제외됩니다.
"보낸 사람"이 보내는 것을 제어 할 권한이 없습니다. 내가 아는 것은 "id"라는 요소가 5 자리 ID로 있다는 것입니다. – aserwin
참고로 csrf에서 URI를 제외하는 방법을 설명하는 섹션을 찾았습니다! 그래서, 그게 내 문제를 해결했습니다! 감사. – aserwin
업데이트 된 답변을 확인하십시오. –