Symfony

Symfony - это набор многократно используемых PHP-компонентов и PHP-фреймворк, используемый для создания веб-приложений, API, микросервисов и веб-сервисов.

Это руководство успешно протестировано в версии 4.3, но оно также должно работать с более старыми версиями.

Symfony не имеет концепции промежуточного слоя, поэтому вы можете создать родительский контроллер для реализации брандмауэра Shieldon, следуя шагам нашего руководства по CodeIgniter.

Если вы не хотите инициализировать брандмауэр Shieldon в родительском контроллере, вы можете следовать шагам режима Bootstrap, приведенным ниже.

Брандмауэр в Symfony Framework

Установка

Используйте PHP Composer:

composer require shieldon/shieldon

Это также установит зависимости, необходимые для Shieldon:

  • shieldon/psr-http Реализация PSR-7, 15, 17 с полной документацией и обширным тестированием.
  • shieldon/event-dispatcher Самый простой диспетчер событий.
  • shieldon/web-security Коллекция функций, связанных с веб-безопасностью.
  • shieldon/messenger Коллекция модулей для отправки сообщений в сторонние API или службы, такие как Telegram, Line, RocketChat, Slack, SendGrid, MailGun и другие.

Реализация

Bootstrap

1. Перед инициализацией ядра

В вашем файле 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);
    }
}

2. Определение маршрута для панели управления брандмауэра

Создайте контроллер с именем 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, он начнет мониторить ваш веб-сайт. Убедитесь, что вы правильно настроили настройки.