CSRF 보호


ㅋㅋ           

X-XSRF-Token

CSRF 토큰 및 JavaScript

JavaScript로 구동되는 애플리케이션을 구축할 때 JavaScript HTTP
기능을 활성화하는 것이 편리합니다. 라이브러리 모든 요청에 ​​CSRF 토큰을 자동으로 첨부합니다. 기본적으로 resources/js/bootstrap.js 파일은 Axios HTTP 함수 라이브러리에 등록된 csrf-token 메타 태그의 값을 사용합니다. 이 라이브러리를 사용하지 않는 경우 애플리케이션에 대해 이 동작을 수동으로 구성해야 합니다.

CSRF 화이트리스트

때때로 원치 않는 CSRF 보호 URL 세트를 설정하고 싶을 수도 있습니다. 예를 들어, Stripe을 사용하여 결제를 처리하고 웹훅 시스템을 사용하는 경우 Stripe는 CSRF 토큰을 경로로 보내지 않기 때문에 Stripe 웹훅 처리기 경로를 CSRF 보호에서 제외해야 합니다.

일반적으로 RouteServiceProviderweb 미들웨어가 이 파일에 모두 적용되기 때문에 일반적으로 이러한 유형의 경로를 routes/web.php 외부에 배치할 수 있습니다. 의 경로. 그러나 아래와 같이 VerifyCsrfToken 미들웨어의 $just 속성에 해당 URL을 추가하여 해당 경로에 대한 CSRF 보호를 제외할 수도 있습니다. routes/web.php 外,因为 RouteServiceProviderweb 中间件适用于该文件中的所有路由。不过,你也可以通过将这类 URL 添加到 VerifyCsrfToken 中间件的 $except 属性来排除对这类路由的 CSRF 保护,如下所示:

<?php
   namespace App\Http\Middleware;
   use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as Middleware;
   class VerifyCsrfToken extends Middleware{   
     /**
     * The URIs that should be excluded from CSRF verification.
     *
     * @var array
     */  
     protected $except = [    
         'stripe/*',        
         'http://example.com/foo/bar',        
         'http://example.com/foo/*',    
         ];
       }

{tip} 当 运行测试 时, CSRF 中间件会自动禁用。

X-CSRF-TOKEN

除了检查 POST 参数中的 CSRF 令牌外, VerifyCsrfToken 中间件还会检查 X-CSRF-TOKEN 请求头。你应该将令牌保存在 HTML meta 标签中,如下:

<meta name="csrf-token" content="{{ csrf_token() }}">

然后,一旦你创建了 meta 标签,就可以指示像 jQuery 这样的库自动将令牌添加到所有请求的头信息中。还可以为基于 AJAX 的应用提供简单,方便的 CSRF 保护。如下:

$.ajaxSetup({
    headers: {   
         'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')  
         }
     });

{tip} 默认情况下,  resources/js/bootstrap.js 文件会用 Axios HTTP  函数库注册 csrf-token meta 标签中的值。如果不使用这个函数库,则需要为你的应用手动配置此行为。

X-XSRF-TOKEN

Laravel 将当前的 CSRF 令牌存储在一个 XSRF-TOKEN cookie
中,该 cookie 包含在框架生成的每个响应中。你可以使用 cookie 值来设置 X-XSRF-TOKEN 请求头。

这个 cookie 主要是作为一种方便的方式发送的,因为一些  JavaScript 框架和库,例如 Angular 和 Axios ,会自动将它的值放入 X-XSRF-TOKENrrreee< blockquote>

{ 팁} CSRF 미들웨어는 테스트를 실행할 때 자동으로 비활성화됩니다.
🎜X-CSRF-TOKEN🎜🎜확인 외에도 POST 매개변수 요청의 CSRF 토큰 외에도 VerifyCsrfToken 미들웨어는 X-CSRF-TOKEN 요청 헤더도 확인합니다. 다음과 같이 HTML meta 태그에 토큰을 저장해야 합니다. 🎜rrreee🎜 그런 다음 meta 태그를 생성하면 jQuery와 같은 라이브러리에 다음을 자동으로 지시할 수 있습니다. 모든 요청의 헤더 정보에 토큰이 추가됩니다. 또한 AJAX 기반 애플리케이션에 대해 간단하고 편리한 CSRF 보호를 제공할 수 있습니다. 다음과 같습니다: 🎜rrreee
🎜{tip} 기본적으로 resources/js/bootstrap.js 파일은 Axios HTTP 함수 라이브러리를 사용하여 csrf-token 메타태그 값. 이 라이브러리를 사용하지 않는 경우 애플리케이션에 대해 이 동작을 수동으로 구성해야 합니다. 🎜
🎜🎜🎜
🎜🎜X-XSRF-TOKEN🎜🎜Laravel은 현재 CSRF 토큰은 프레임워크에서 생성된 모든 응답에 포함된 XSRF-TOKEN 쿠키
에 저장됩니다. 쿠키 값을 사용하여 X-XSRF-TOKEN 요청 헤더를 설정할 수 있습니다. 🎜🎜Angular 및 Axios와 같은 일부 JavaScript 프레임워크 및 라이브러리는 해당 값을 자동으로 X-XSRF-TOKEN 헤더에 넣기 때문에 이 쿠키는 주로 편의를 위해 전송됩니다. 🎜🎜이 글은 🎜LearnKu.com🎜 웹사이트에 처음 게시되었습니다. 🎜🎜