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();
생성된 미들웨어를 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>
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; });
서버 측에서는 제출된 요청의 CSRF 토큰이 유효한지 확인해야 합니다. 다음은 경로 핸들러 함수 예시에 대한 코드입니다.
rrreee
위 내용은 Slim 프레임워크에서 미들웨어를 사용하여 CSRF(교차 사이트 요청 위조)를 처리하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!