현재 위치: > 최신 기사 목록> 슬림 프레임 워크에서 크로스 사이트 요청 위조 (CSRF) 공격을 방지하기 위해 미들웨어를 사용하는 방법

슬림 프레임 워크에서 크로스 사이트 요청 위조 (CSRF) 공격을 방지하기 위해 미들웨어를 사용하는 방법

M66 2025-06-21

미들웨어를 사용하여 슬림 프레임 워크에서 CSRF 공격을 방지하십시오

크로스 사이트 요청 위조 (CSRF)는 사이버 공격의 일반적인 방법입니다. 공격자는 로그인 된 웹 사이트에서 사용자 인증 정보를 이용하여 악의적 인 요청을 시작하도록합니다. CSRF 공격을 효과적으로 방지하기 위해 슬림 프레임 워크는 미들웨어를 사용하여 보호를위한 메커니즘을 제공합니다. 이 기사는 설치 단계, 미들웨어 생성, 응용 프로그램 구성 및 CSRF 토큰 확인을 포함하여 슬림 프레임 워크에서 CSRF 보호를 구현하는 방법에 대한 자세한 설명을 제공합니다.

1 단계 : 슬림 프레임 워크를 설치하십시오

먼저 작곡가를 통해 슬림 프레임 워크를 설치해야합니다. 새로운 슬림 프로젝트를 만들려면 터미널에서 다음 명령을 실행하십시오.

작곡가 생성 프로젝트 슬림/슬림 내 마이 아프

2 단계 : CSRF 미들웨어를 만듭니다

슬림 프레임 워크에서는 미들웨어 메커니즘을 통해 CSRF 보호를 처리 할 수 ​​있습니다. 이렇게하려면 csrfmiddleware.php 라는 미들웨어 파일을 만들어야합니다. 먼저 Project Root 디렉토리에서 MiddleWares 라는 디렉토리를 작성하고 CSRFMiddleware.php 파일을 만듭니다.

다음은 CSRF Middleware의 코드 예입니다.

<?php
namespace App\Middlewares;

class CsrfMiddleware extends SlimMiddlewareAntiCsrf
{
    public function call()
    {
        $this-> app-> hook ( &#39;slim.before&#39;, [$ this, &#39;check&#39;]);
        $ this-> next-> call ();
    }

    공개 기능 validatestorage ()
    {
        if (! $ this-> app-> view ()-> getData ( &#39;csrf_key&#39;) ||
            ! $ this-> app-> view ()-> getData ( &#39;csrf_value&#39;)) {
            $ this-> app-> getLog ()-> error ( &#39;CSRF 유효성 검사 오류 : 누락 된 CSRF 키 및/또는 값&#39;);
            $ this-> app-> pass ();
        }
    }
}

3 단계 : CSRF 미들웨어를 등록하십시오

다음으로 슬림 한 응용 프로그램에서 방금 만든 CSRF 미들웨어를 등록해야합니다. 미들웨어를 등록하려면 다음 코드를 index.php 파일에 추가하십시오.

$ app = new Slimapp ();
...
$ app-> add (새 app \ middlewares \ csrfmiddleware ());
...
$ app-> run ();

4 단계 : CSRF 토큰을 추가하여 형성합니다

CSRF 공격으로부터 양식을 보호하려면 CSRF 토큰을 양식에 추가해야합니다. 이것은 숨겨진 필드를 양식에 삽입하여 달성됩니다. 다음은 CSRF 토큰 추가를위한 샘플 코드입니다.

<form action="/submit" method="post">
    <input type="hidden" name="csrf_key" value="{{ csrf_key }}">
    <input type="hidden" name="csrf_value" value="{{ csrf_value }}">
    <!-- 다른 형태의 필드 -->
    <button type="submit">제출하다</button>
</form>

5 단계 : CSRF 토큰의 유효성을 확인하십시오

서버 측에서 제출 된 요청의 CSRF 토큰이 유효한지 확인해야합니다. 다음은 예제 라우팅 프로세서 코드입니다.

$ app-> post ( &#39;/제출&#39;, function ($ request, $ responsk) {
    $ data = $ request-> getParsedBody (); // 요청 매개 변수 가져 오기 // csrf token $ csrf_key = $ data [ &#39;csrf_key&#39;];
    $ csrf_value = $ data [ &#39;csrf_value&#39;];

    if (! $ app-> csrf-> check ($ csrf_key, $ csrf_value)) {
        // CSRF 토큰 검증 실패 $ response-> getBody ()-> 쓰기 ( &#39;CSRF 유효성 검증 실패&#39;);
        반환 $ $ 응답-> Withstatus (403);
    }

    // 프로세스 양식 제출 // ...

    $ response-> getbody ()-> write ( &#39;성공적으로 제출 된 양식&#39;);
    반환 $ 응답;
});

요약

슬림 프레임 워크에서 미들웨어를 사용하면 CSRF 보호를 쉽게 구현할 수 있습니다. 먼저 CSRF 미들웨어를 작성하여 토큰을 확인하고 처리 한 다음 CSRF 토큰을 양식에 추가하여 사용자 요청의 보안을 보장합니다. 이러한 방식으로 슬림 프레임 워크는 CSRF 공격을 효과적으로 방지하고 응용 프로그램의 보안을 향상시킬 수 있습니다.