Zend 프레임워크는 공식적으로 Zend MVC 및 Zend Expressive의 두 가지 유형의 스켈레톤을 제공합니다.
사용 중인 스켈레톤에 상관없이이 가이드는 Shieldon 방화벽을 구현하는 방법에 대한 아이디어를 제공할 수 있습니다. Zend에서는 어떤 방법이 최선의 방법인지 확신할 수 없으므로 선호하는 방법을 선택할 수 있습니다.
PHP Composer를 사용하십시오:
composer require shieldon/shieldon
이는 Shieldon에 필요한 종속성도 설치합니다:
이는 Zend Expressive 스켈레톤에서 PSR-15 미들웨어를 사용하는 예입니다.
Zend Expressive용으로 준비 된 통합 클래스가 있습니다.
pipeline.php
에 다음 줄을 추가하십시오.
예시:
$app->pipe(\Shieldon\Firewall\Integration\ZendPsr15::class);
App/src/Handler
디렉토리로 이동하여 FirewallPanelHandler
라는 PHP 파일을 만드십시오.
아래의 텍스트를 복사하여 해당 파일에 붙여넣기하십시오.
예시:
<?php
declare(strict_types=1);
namespace App\Handler;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
use Zend\Diactoros\Response;
/**
* 방화벽 패널 핸들러
* CSRF를 사용하는 경우 제어 패널에 CSRF 토큰을 전달해야합니다.
*/
class FirewallPanelHandler implements RequestHandlerInterface
{
public function handle(ServerRequestInterface $request): ResponseInterface
{
$panel = new \Shieldon\Firewall\Panel();
$panel->entry();
return new Response();
}
}
route.php
에 다음 줄을 추가하십시오.
예시:
// 시작 - Shieldon 방화벽
$app->route('/firewall/panel/', App\Handler\FirewallPanelHandler::class, ['GET', 'POST']);
foreach(\Shieldon\Firewall\Panel::getRoutes() as $route) {
$app->route("/firewall/panel/$route/", App\Handler\FirewallPanelHandler::class, ['GET', 'POST']);
}
// 끝 - Shieldon 방화벽
여기까지입니다.
사용 중인 Zend 프레임워크의 버전을 정확히 모르기 때문에 대부분의 Zend 버전에서 작동하는 지침을 제공합니다.
public/index.php
파일에서 다음 줄 아래에 다음 코드를 추가하십시오.
/*
|--------------------------------------------------------------------------
| Shieldon 방화벽 실행
|--------------------------------------------------------------------------
|
| Shieldon 방화벽은 웹 사이트로 들어오는 모든 HTTP 요청을 감시합니다.
|
*/
if (isset($_SERVER['REQUEST_URI'])) {
// 이 디렉토리는 쓰기 가능해야합니다.
$storage = dirname($_SERVER['SCRIPT_FILENAME']) . '/../shieldon_firewall';
$firewall = new \Shieldon\Firewall\Firewall();
$firewall->configure($storage);
$firewall->controlPanel('/firewall/panel');
$response = $firewall->run();
if ($response->getStatusCode() !== 200) {
$httpResolver = new \Shieldon\Firewall\HttpResolver();
$httpResolver($response);
}
}
다음 단계는 제어 패널용 컨트롤러를 만드는 것입니다.
FirewallController
라는 컨트롤러를 만드십시오.
<?php
namespace Application\Controller;
use Zend\Mvc\Controller\AbstractActionController;
class FirewallController extends AbstractActionController
{
/**
* 방화벽 패널의 진입점입니다.
*/
public function panelAction()
{
$panel = new \Shieldon\Firewall\Panel();
$panel->entry();
}
}
다음 위치에있는 module.config.php
파일을 엽니다.
module/Application/config/module.config.php
(3-1) ['router']['routes']
배열 안에 다음 코드를 추가하세요:
예시:
'firewallpanel' => [
'type' => Segment::class,
'options' => [
'route' => '/firewall/panel[:slug]',
'constraints' => [
'slug' => '[a-zA-Z0-9\/]*',
],
'defaults' => [
'controller' => Controller\FirewallController::class,
'action' => 'panel',
],
],
],
(3-2) ['controllers']['factories']
배열 안에 다음 코드를 추가하세요:
Controller\FirewallController::class => InvokableFactory::class,
여기까지입니다.
패널로 이동하여 방화벽 패널에 접속할 수 있습니다. 페이지를 보려면 브라우저에서 다음 URL로 이동하십시오.
https://yourwebsite.com/firewall/panel
기본 로그인은 shieldon_user
이고 비밀번호는 shieldon_pass
입니다. 방화벽 패널에 로그인 한 후 첫 번째로 해야 할 일은 로그인 및 비밀번호를 변경하는 것입니다.
Daemon
설정 섹션에서 Shieldon 방화벽이 활성화되어있는 경우 웹 사이트를 모니터링하기 시작합니다. 설정을 올바르게 설정했는지 확인하십시오.