Symfony는 재사용 가능한 PHP 컴포넌트와 웹 응용 프로그램, API, 마이크로서비스 및 웹 서비스를 구축하는 데 사용되는 PHP 프레임워크입니다.
이 안내서는 4.3
버전에서 성공적으로 테스트되었으며 이전 버전에서도 작동할 것으로 예상됩니다.
Symfony에는 미들웨어 개념이 없으므로 CodeIgniter 가이드의 단계와 동일한 방법으로 Shieldon 방화벽을 구현하기 위해 부모 컨트롤러를 만들 수 있습니다.
부모 컨트롤러에서 Shieldon 방화벽을 초기화하지 않고 싶은 경우 아래에서 제공하는 부트스트랩 모드 단계를 따를 수 있습니다.
PHP Composer를 사용하세요:
composer require shieldon/shieldon
이것은 Shieldon에 필요한 종속성도 설치합니다:
config/bootstrap.php
파일에서 다음 줄 다음에 다음 코드를 추가하세요:
예:
require dirname(__DIR__).'/vendor/autoload.php';
/*
|--------------------------------------------------------------------------
| Shieldon 방화벽 실행
|--------------------------------------------------------------------------
|
| Shieldon 방화벽은 웹사이트로 들어오는 모든 HTTP 요청을 모니터링합니다.
*/
if (isset($_SERVER['REQUEST_URI'])) {
// 이 디렉토리는 쓰기 권한이 필요합니다.
$storage = __DIR__ . '/../storage/shieldon';
$firewall = new \Shieldon\Firewall\Firewall();
$firewall->configure($storage);
// 컨트롤 패널의 기본 URL.
$firewall->controlPanel('/firewall/panel/');
$response = $firewall->run();
if ($response->getStatusCode() !== 200) {
$httpResolver = new \Shieldon\Firewall\HttpResolver();
$httpResolver($response);
}
}
다음 명령을 실행하여 FirewallPanelController
라는 이름의 컨트롤러를 생성하세요.
예:
php bin/console make:controller FirewallPanelController
FirewallPanelController
컨트롤러 클래스에 다음 줄을 추가하세요:
예:
$panel = new \Shieldon\Firewall\Panel();
$panel->entry();
CSRF가 활성화되어 있는 경우 다음 줄을 추가하세요:
예:
$csrf = $this->container->get('security.csrf.token_manager');
$token = $csrf->refreshToken('key');
완전한 예시는 다음과 같습니다:
예:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Routing\Annotation\Route;
class FirewallPanelController extends AbstractController
{
/**
* @Route("/firewall/panel/", name="firewall_panel")
*/
public function panel()
{
$panel = new \Shieldon\Firewall\Panel();
// `symfony/security-csrf`가 설치된 경우.
$csrf = $this->container->get('security.csrf.token_manager');
$token = $csrf->refreshToken('key')->getValue();
$panel->csrf(['_token' => $token]);
$panel->entry();
exit;
}
/**
* @Route("/firewall/panel/{class}/{method}", name="firewall_panel_page")
*/
public function page()
{
$this->panel();
}
}
여기까지입니다.
방화벽 패널은 /firewall/panel
경로로 접근할 수 있습니다. 페이지를 보려면 브라우저에서 해당 URL로 이동하세요.
https://yourwebsite.com/firewall/panel
기본 로그인은 shieldon_user
이며, 비밀번호는 shieldon_pass
입니다. 방화벽 패널에 로그인한 후에는 로그인과 비밀번호를 변경하는 것이 좋습니다.
Shieldon 방화벽이 "Daemon" 설정 섹션에서 활성화된 경우 웹사이트를 모니터링하게 됩니다. 설정을 올바르게 설정했는지 확인하세요.