> 백엔드 개발 > PHP 튜토리얼 > Slim 프레임워크에서 미들웨어를 사용하여 CSRF(교차 사이트 요청 위조)를 처리하는 방법

Slim 프레임워크에서 미들웨어를 사용하여 CSRF(교차 사이트 요청 위조)를 처리하는 방법

PHPz
풀어 주다: 2023-07-28 16:12:01
원래의
831명이 탐색했습니다.

Slim 프레임워크에서 미들웨어를 사용하여 CSRF(교차 사이트 요청 위조)를 처리하는 방법

소개:
교차 사이트 요청 위조(CSRF)는 웹 사이트가 작동할 때 공격자가 사용자 인증 정보를 이용하는 일반적인 네트워크 공격 방법입니다. 로그인하여 사용자가 악의적인 요청을 수행하도록 강제합니다. CSRF 공격으로부터 애플리케이션을 보호하기 위해 Slim 프레임워크의 미들웨어를 사용하여 CSRF 문제를 처리할 수 있습니다. 이 기사에서는 CSRF 공격을 방지하기 위해 Slim 프레임워크에서 미들웨어를 사용하는 방법과 해당 코드 예제를 소개합니다.

1단계: Slim 프레임워크 설치
먼저, Slim 프레임워크를 로컬에 설치해야 합니다. Composer를 사용하면 Slim 프레임워크 및 관련 종속성을 쉽게 설치할 수 있습니다. 터미널에서 다음 명령을 실행하여 새로운 Slim 프로젝트를 생성합니다:

composer create-project slim/slim my-app
로그인 후 복사

2단계: CSRF 미들웨어 생성
Slim 프레임워크에는 미들웨어(미들웨어) 메커니즘이 내장되어 있으며 미들웨어를 생성하여 CSRF를 처리할 수 있습니다. 프로젝트의 루트 디렉터리에 새 디렉터리 middlewares를 만들고 이 디렉터리에 CsrfMiddleware.php라는 파일을 만듭니다. 코드 예시는 다음과 같습니다. middlewares,并在该目录下创建一个名为CsrfMiddleware.php的文件。代码示例如下:

<?php
namespace AppMiddlewares;

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

    public function validateStorage()
    {
        if (!$this->app->view()->getData('csrf_key') ||
            !$this->app->view()->getData('csrf_value')) {
            $this->app->getLog()->error('CSRF validation error: missing CSRF key and/or value');
            $this->app->pass();
        }
    }
}
로그인 후 복사

步骤三:注册CSRF中间件
在Slim的应用程序设置中注册创建的中间件。打开项目的根目录下的index.php

$app = new SlimApp();
...
$app->add(new AppMiddlewaresCsrfMiddleware());
...
$app->run();
로그인 후 복사

3단계: CSRF 미들웨어 등록

생성된 미들웨어를 Slim의 애플리케이션 설정에 등록합니다. 프로젝트의 루트 디렉터리에서 index.php 파일을 열고 애플리케이션 설정에 다음 코드를 추가합니다.

<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>
로그인 후 복사

4단계: 양식에 CSRF 토큰을 추가합니다

CSRF 보호가 필요한 위치 양식에 CSRF 토큰을 추가해야 합니다. 이는 양식에 숨겨진 필드를 추가하여 수행할 수 있습니다. 다음은 샘플 코드입니다.

$app->post('/submit', function ($request, $response) {
    $data = $request->getParsedBody(); // 获取请求参数

    // 检查CSRF令牌
    $csrf_key = $data['csrf_key'];
    $csrf_value = $data['csrf_value'];
    if (!$app->csrf->check($csrf_key, $csrf_value)) {
        // CSRF令牌验证失败
        $response->getBody()->write('CSRF validation failed');
        return $response->withStatus(403);
    }

    // 处理表单提交
    // ...

    $response->getBody()->write('Form submitted successfully');
    return $response;
});
로그인 후 복사
5단계: CSRF 토큰의 유효성 확인

서버 측에서는 제출된 요청의 CSRF 토큰이 유효한지 확인해야 합니다. 다음은 경로 핸들러 함수 예시에 대한 코드입니다.
rrreee

요약: 🎜 Slim 프레임워크의 미들웨어 메커니즘을 사용하면 애플리케이션에서 CSRF 보호를 쉽게 구현할 수 있습니다. CSRF 토큰을 검증하고 처리하는 CSRF 미들웨어를 만든 다음 CSRF 토큰을 양식에 추가하여 사용자 요청을 보호하세요. 위는 Slim 프레임워크에서 CSRF를 처리하는 방법과 코드 예시입니다. 이 기사가 도움이 되기를 바랍니다! 🎜

위 내용은 Slim 프레임워크에서 미들웨어를 사용하여 CSRF(교차 사이트 요청 위조)를 처리하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿