Slim 3 은 CSRF (Cross-Site Request Forgery) 로부터 어플리케이션을 보호하기 위해 독립적인 slimphp/Slim-Csrf PHP 컴포넌트를 사용할 수 있다.
이 컴포넌트는 클라이언트 측의 HTML form 으로부터 오는 각 POST 요청에 대해 유일한 토큰을 생성한다.
설치
프로젝트 루트 디렉토리에서 다음 bash 명령을 실행한다.
$ composer require slim/csrf | cs |
사용
slimphp/Slim-Csrf 컴포넌트는 어플리케이션 미들웨어를 포함한다. 다음과 같이 컴포넌트를 추가한다.
// Add middleware to the application $app = new \Slim\App; $app->add(new \Slim\Csrf\Guard); // Create your application routes... // Run application $app->run(); | cs |
CSRF 토큰 이름과 값 가져오기
CSRF 토큰의 이름과 값은 각 요청에 대해 유일하며, 가장 최근의 CSRF 토큰의 이름과 값은 PSR-7 요청 객체에 속성으로 사용할 수 있다.
다음과 같이 현재 CSRF 토큰 이름과 값을 가져올 수 있다.
$app->get('/foo', function ($req, $res, $args) { // Fetch CSRF token name and value $name = $req->getAttribute('csrf_name'); $value = $req->getAttribute('csrf_value'); // TODO: Render template with HTML form and CSRF token hidden field }); | cs |
템플릿에 CSRF 토큰 이름과 값을 전달하면, HTML form 의 hidden 필드에 저장하여 POST 요청으로 전송될 것이다.
WRITTEN BY
- 손가락귀신
정신 못차리면, 벌 받는다.
,