CSRF 보호
ㅋㅋ
X-XSRF-Token
- 소개
- Laravel을 사용하면 교차 공격으로부터 애플리케이션을 쉽게 보호할 수 있습니다. - 사이트 요청 위조(CSRF) 공격, 인증된 사용자 ID를 사용하여 무단 명령을 실행하는 악의적인 공격입니다. Laravel은 각 활성 사용자 세션에 대해 CSRF "토큰"을 자동으로 생성합니다. 토큰은 인증된 사용자가 애플리케이션에 요청하는 사용자인지 확인하는 데 사용됩니다.
- 애플리케이션에서 HTML 양식을 정의할 때마다 CSRF 보호 미들웨어가 요청을 확인할 수 있도록 양식에 숨겨진 CSRF 태그 필드를 포함해야 합니다.
@csrf code> 블레이드 지시어를 사용하여 생성할 수 있습니다.
<form method="POST" action="/profile"> @csrf ... </form>
웹 미들웨어 그룹
VerifyCsrfToken
에 포함됨 미들웨어는 요청의 토큰이 세션에 저장된 토큰과 일치하는지 자동으로 확인합니다. CSRF 토큰 및 JavaScript
JavaScript로 구동되는 애플리케이션을 구축할 때 JavaScript HTTP기능을 활성화하는 것이 편리합니다. 라이브러리 모든 요청에 CSRF 토큰을 자동으로 첨부합니다. 기본적으로
resources/js/bootstrap.js
파일은 Axios HTTP 함수 라이브러리에 등록된 csrf-token
메타 태그의 값을 사용합니다. 이 라이브러리를 사용하지 않는 경우 애플리케이션에 대해 이 동작을 수동으로 구성해야 합니다. CSRF 화이트리스트
때때로 원치 않는 CSRF 보호 URL 세트를 설정하고 싶을 수도 있습니다. 예를 들어, Stripe을 사용하여 결제를 처리하고 웹훅 시스템을 사용하는 경우 Stripe는 CSRF 토큰을 경로로 보내지 않기 때문에 Stripe 웹훅 처리기 경로를 CSRF 보호에서 제외해야 합니다.
일반적으로 RouteServiceProvider
의 web
미들웨어가 이 파일에 모두 적용되기 때문에 일반적으로 이러한 유형의 경로를 routes/web.php
외부에 배치할 수 있습니다. 의 경로. 그러나 아래와 같이 VerifyCsrfToken
미들웨어의 $just
속성에 해당 URL을 추가하여 해당 경로에 대한 CSRF 보호를 제외할 수도 있습니다. routes/web.php
外,因为 RouteServiceProvider
的 web
中间件适用于该文件中的所有路由。不过,你也可以通过将这类 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-TOKEN
rrreee< blockquote>
VerifyCsrfToken
미들웨어는 X-CSRF-TOKEN
요청 헤더도 확인합니다. 다음과 같이 HTML meta
태그에 토큰을 저장해야 합니다. 🎜rrreee🎜 그런 다음 meta
태그를 생성하면 jQuery와 같은 라이브러리에 다음을 자동으로 지시할 수 있습니다. 모든 요청의 헤더 정보에 토큰이 추가됩니다. 또한 AJAX 기반 애플리케이션에 대해 간단하고 편리한 CSRF 보호를 제공할 수 있습니다. 다음과 같습니다: 🎜rrreee🎜{tip} 기본적으로🎜🎜🎜resources/js/bootstrap.js
파일은 Axios HTTP 함수 라이브러리를 사용하여csrf-token
메타태그 값. 이 라이브러리를 사용하지 않는 경우 애플리케이션에 대해 이 동작을 수동으로 구성해야 합니다. 🎜
XSRF-TOKEN
쿠키에 저장됩니다. 쿠키 값을 사용하여
X-XSRF-TOKEN
요청 헤더를 설정할 수 있습니다. 🎜🎜Angular 및 Axios와 같은 일부 JavaScript 프레임워크 및 라이브러리는 해당 값을 자동으로 X-XSRF-TOKEN
헤더에 넣기 때문에 이 쿠키는 주로 편의를 위해 전송됩니다. 🎜🎜이 글은 🎜LearnKu.com🎜 웹사이트에 처음 게시되었습니다. 🎜🎜