Symfony - это набор многократно используемых PHP-компонентов и PHP-фреймворк, используемый для создания веб-приложений, API, микросервисов и веб-сервисов.
Это руководство успешно протестировано в версии 4.3
, но оно также должно работать с более старыми версиями.
Symfony не имеет концепции промежуточного слоя, поэтому вы можете создать родительский контроллер для реализации брандмауэра Shieldon, следуя шагам нашего руководства по CodeIgniter.
Если вы не хотите инициализировать брандмауэр Shieldon в родительском контроллере, вы можете следовать шагам режима Bootstrap, приведенным ниже.
Используйте 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
, он начнет мониторить ваш веб-сайт. Убедитесь, что вы правильно настроили настройки.