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
손가락귀신
정신 못차리면, 벌 받는다.

,