DneustadtCsrfCookieBundle
1.0.7
이 Symfony 번들은 XHR을 통해 Symfony에서 제공하는 엔드포인트를 요청하는 클라이언트측 애플리케이션에 대해 CSRF 또는 XSRF(Cross Site Request Forgery) 보호 기능을 제공합니다.
DunglasAngularCsrfBundle에서 많은 영향을 받고 영감을 받았습니다.
CSRF 토큰을 클라이언트 측에 저장하려면 토큰이 포함된 쿠키를 하나 이상의 사전 결정된 경로로 설정할 수 있습니다. 번들은 Axios와 같은 최신 클라이언트 측 http 클라이언트가 해당 쿠키를 자동으로 선택하는 방식으로 사전 구성되어 있습니다. 이후 Symfony에 대한 요청 시 CSRF 토큰을 HTTP 헤더에 추가하여 서버 측에서 검증할 수 있습니다. 다시 말하지만, Axios와 같은 일부 클라이언트는 이미 자동으로 그렇게 할 수 있습니다.
Composer를 사용하여 이 번들을 설치하십시오.
composer require dneustadt/csrf-cookie-bundle
# config/packages/dneustadt_csrf_cookie.yaml
dneustadt_csrf_cookie :
# Generally enable/disable the CSRF protection
enable : true
# ID used to generate token
id : csrf
# Name of the cookie the token is stored in
name : XSRF-TOKEN
# Cookie expiration
expire : 0
# Cookie path
path : /
# Cookie domain
domain : null
# Cookie HttpOnly
httpOnly : true
# Cookie secure
secure : false
# Name of the HTTP header the token is expected to be stored in
header : X-XSRF-TOKEN
# Cookie same site policy
sameSite : lax
경로는 토큰을 제공( create
)하거나 토큰을 통해 보호( require
)하거나 두 가지 모두를 수행하도록 설정할 수 있습니다.
단일 경로 또는 경로 모음의 기본값이 동작을 구성하는 데 사용되므로 구성 파일이나 주석을 사용하여 이를 수행하는 것이 가능합니다.
# config/routes.yaml
api_controllers :
resource : ../src/Controller/Api
type : annotation
defaults :
csrf :
# bool or array of allowed methods
create : true
# bool or array of allowed methods
require :
- ' POST '
- ' PUT '
- ' PATCH '
- ' DELETE '
# array of route names to be excluded from create/require in this collection
exclude :
- ' app_api_blog_index '
# additional condition using ExpressionLanguage syntax
condition : ' request.isXmlHttpRequest() '
조건에 대한 자세한 내용은 ExpressionLanguage를 참조하세요.
주석으로:
// src/Controller/Api/ExampleController.php
namespace App Controller Api ;
// ...
class ExampleController extends AbstractController
{
/**
* @Route("/api/index", methods={"GET","HEAD"}, defaults={"csrf": {"create": true}})
*/
public function index ()
{
// ...
}
}
해당 토큰이 성공적으로 검증될 수 있는 경우 HTTP 헤더에 저장된 토큰을 통해 보호되도록 구성된 경로에 대해 양식의 내장 CSRF 보호가 자동으로 비활성화됩니다.