Laravel 9+의 맥락에서 AJAX 요청은 필요한 보안 조치를 보장하기 위해 CSRF 토큰을 노출해야 합니다. 그러나 다양한 토큰 배치 방법은 코드의 우아함과 구성에 영향을 미칠 수 있습니다. 주요 두 가지 방법은 다음과 같습니다.
방법 1: 블레이드 구문을 통해 CSRF 토큰을 직접 삽입합니다
이 방법에서는 CSRF 토큰 카드 블레이드 구문을 통해 JavaScript에 직접 포함됩니다. (여러 곳에서 동일한 코드 반복)
$(document).ready(function() { $.ajax설정({ 헤더: { 'X-CSRF-TOKEN': "{{ csrf_token() }}" } }); });
이 접근 방식은 토큰을 HTML 본문 외부에 유지하지만 JavaScript 파일에서 블레이드 구문을 사용해야 하므로 문제 분리가 복잡해집니다.
방법 2: 메타 태그에서 CSRF 토큰 추출
이 방법에는 CSRF 토큰을 HTML 메타 태그에 넣은 다음 추출하여 사용합니다. AJAX 설정에서.
$(document).ready(function() { $.ajax설정({ 헤더: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') } }); });
이 접근 방식에서는 토큰이 HTML에 노출되지만(어쨌든 노출됨) JavaScript 파일 관리 및 재사용이 단순화되고 코드/문제를 더 쉽게 분리할 수 있습니다.
위의 내용을 고려할 때 접근 방식 2가 더 우아하고 문제를 더 효과적으로 분리할 수 있으므로 더 좋다고 생각합니다. 아니면 보안과 코드 구성의 더 나은 균형을 제공하기 위해 AJAX 요청을 사용할 때 CSRF 토큰 배치를 관리하기 위한 Laravel의 다른 모범 사례가 있습니까? 귀하의 통찰력을 기대합니다.
PS: 예를 들어 https://cheatsheetseries.owasp.org/cheatsheets/Cross-Site_Request_Forgery_Prevention_Cheat_Sheet.html을 살펴봤지만 그 중 일부는 내 이해 범위를 벗어났습니다.
토큰은 귀하가 소유하려는 사용자에게만 노출됩니다(그들이 귀하에게 다시 보낼 수 있도록).
어떤 공격자에게도 노출되지 않습니다. (서버와 브라우저 간의 통신을 손상시키지 않는 한, 이는 성공적인 CSRF 공격보다 더 많은 액세스 권한을 얻었음을 의미합니다.)
직접 옵션을 선택하세요.