CakePHP

CakePHP - это широко используемый фреймворк с открытым исходным кодом для веб-разработки, следующий архитектурному паттерну MVC. Он пользуется высокой популярностью в сообществе PHP и предлагает множество функций и инструментов для создания веб-приложений.

Это руководство успешно прошло тестирование в версии 3.8 CakePHP. Однако оно также применимо к более ранним версиям фреймворка.

Firewall в фреймворке CakePHP

Установка

Используйте 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 и другие.

Реализация

CakePHP 3

Шаги 1 и 2 применяются к одному и тому же файлу, расположенному в /config/route.php.

Как шаг 1, так и шаг 2 включают в себя модификацию одного и того же файла, расположенного в /config/routes.php. Поэтому вам нужно выполнить следующие действия в этом файле:

  • Откройте файл /config/routes.php.
  • Найдите секцию, где вы определяете маршруты вашего приложения.
  • Внесите изменения, описанные в шагах 1 и 2 согласно предоставленным инструкциям.
  • Сохраните изменения в файле /config/routes.php.

Следуя этим шагам, вы убедитесь, что обе модификации внесены в соответствующий файл.

1. Регистрация Middleware

Для CakePHP доступен Middleware здесь. Просто зарегистрируйте его в вашем приложении.

Пример:

/**
 * Применить брандмауэр Shieldon к текущему маршруту.
 */
$routes->registerMiddleware(
    'firewall',
    new \Shieldon\Firewall\Integration\CakePhp()
);

$routes->applyMiddleware('firewall');

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

Пример:

/**
 * Определите маршрут для панели брандмауэра.
 */
$routes->connect('/firewall/panel/', [
    'controller' => 'FirewallPanel',
    'action' => 'entry'
]);

3. Создание контроллера для панели брандмауэра

Создайте контроллер с именем FirewallPanelController и добавьте в него следующий код.

Пример:

$panel = new \Shieldon\Firewall\Panel();
$panel->entry();
exit;

Если у вас включена защита от CSRF, добавьте эти строки:

Пример:

$panel->csrf(
    '_csrfToken',
    $this->request->getParam('_csrfToken')
);

Полный пример будет выглядеть следующим образом:

Пример:

<?php

namespace App\Controller;

class FirewallPanelController extends AppController
{
    /**
     * Это вход в нашу панель брандмауэра.
     */
    public function entry()
    {
        // Перейдите в панель брандмауэра.
        $panel = new \Shieldon\Firewall\Panel();

        $panel->csrf([
            '_csrfToken' => $this->request->getParam('_csrfToken')
        ]);

        $panel->entry();
        exit;
    }
}

Вот и всё.

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

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

https://for.example.com/firewall/panel

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

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