Yii 2

В этом руководстве я расскажу вам о том, как реализовать брандмауэр Shieldon в вашем приложении Yii.

Брандмауэр в Yii 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 и другие.

Реализация

Yii 2

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

В файле public/index.php, перед этой строкой:

require __DIR__ . '/../vendor/yiisoft/yii2/Yii.php';

Добавьте следующий код:

Пример:

/*
|--------------------------------------------------------------------------
| Запуск брандмауэра Shieldon
|--------------------------------------------------------------------------
|
| Брандмауэр Shieldon будет отслеживать все HTTP-запросы, поступающие на ваш сайт.
| Запуск брандмауэра Shieldon перед инициализацией Yii позволит избежать возможных
| конфликтов с встроенными функциями Yii.
*/

if (isset($_SERVER['REQUEST_URI'])) {
    $storage = __DIR__ . '/../runtime/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

namespace app\controllers;

use yii\web\Controller;

class FirewallController extends Controller
{
    public function beforeAction($action)
    {
        $this->enableCsrfValidation = false;

        return parent::beforeAction($action);
    }

    /**
     * Точка входа в панель управления брандмауэра.
     *
     * @return string
     */
    public function actionPanel()
    {
        $panel = new \Shieldon\Firewall\Panel();
        $panel->entry();
    }
}

Убедитесь, что в файле config/web.php параметр enablePrettyUrl установлен в значение true.

Пример:

'urlManager' => [
    'enablePrettyUrl' => true,
    'showScriptName' => false,
    'rules' => [
        'firewall/panel/' => 'firewall/panel',
        'firewall/panel/<slug:.*>' => 'firewall/panel',
    ],
],

Вот и всё.

Вы можете получить доступ к панели управления брандмауэра, посетив /firewall-panel в вашем браузере.

Панель управления

https://yourwebsite.com/firewall-panel

Логин по умолчанию: shieldon_user, пароль: shieldon_pass. После входа в панель управления брандмауэра, первое, что следует сделать, это изменить логин и пароль.

Если брандмауэр Shieldon включен в разделе настроек Daemon, он начнет отслеживать ваш веб-сайт. Убедитесь, что вы правильно настроили параметры.