CodeIgniter

CodeIgniter - это легкий MVC-фреймворк. Сначала я расскажу о CodeIgniter 3, поскольку его версия 4 имеет значительные отличия от предыдущих версий.

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

Брандмауэр в фреймворке CodeIgniter

Установка

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

Внедрение

  • CodeIgniter 3
  • CodeIgniter 4

CodeIgniter 3

У CodeIgniter 3 есть основной контроллер с именем CI_Controller, который обрабатывает его архитектурный шаблон MVC (Model-View-Controller).

Я настоятельно рекомендую создать родительский контроллер с именем MY_Controller в папке core и добавить в него начальный код.

1. MY_Controller

Создайте файл с именем MY_Controller.php в папке core.

class MY_Controller extends CI_Controller
{
    /**
     * Конструктор.
     */
    public function __construct()
    {
        parent::__construct();
    }
}

2. Инициализация экземпляра брандмауэра

Добавьте начальный код в конструктор, чтобы каждый контроллер, расширяющий MY_Controller, имел инициализированный брандмауэр Shieldon и метод $this->firewall().

class MY_Controller extends CI_Controller
{
    /**
     * Конструктор.
     */
    public function __construct()
    {
        parent::__construct();

        // Автозагрузчик Composer
        require_once APPPATH . '../vendor/autoload.php';

        // Эта папка должна быть доступна для записи.
        $storage = APPPATH . 'cache/shieldon_firewall';

        $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);
        }
    }

    /**
     * Защита брандмауэра Shieldon.
     */
    public function firewall()
    {
        $firewall = \Shieldon\Container::get('firewall');
        $firewall->run();
    }
}

Подсказка

Для обеспечения оптимальной безопасности папки системы и приложения следует размещать выше корневого каталога сайта, чтобы они не были доступны напрямую через браузер.

Если папка приложения находится на том же уровне, что и index.php, переместите папку $storage в безопасное место. Например:

$storage = APPPATH . '../shieldon';

3. Определение контроллера для панели управления

Нам понадобится контроллер, чтобы получить доступ к панели управления брандмауэром Shieldon. В этом примере мы определяем контроллер с именем Firewall.

class Firewall extends MY_Controller
{
    public function __construct()
    {
        parent::__construct();
    }

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

Теперь вы можете получить доступ к панели управления брандмауэром по следующему URL:

https://yoursite.com/firewall/panel/

CodeIgniter 4

1. Регистрация фильтра.

В файле app/Config/Filters.php добавьте следующий код в свойство $aliases:

'firewall' => \Shieldon\Firewall\Intergration\CodeIgniter4::class,

Затем добавьте строку firewall в свойство $globals, в массиве before:

public $globals = [
    'before' => [
        'firewall'
    ],
];

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

<?php 

namespace App\Controllers;

class Firewall extends BaseController
{
    public function panel()
    {
        $panel = new \Shieldon\Firewall\Panel();
        $panel->csrf([csrf_token() => csrf_hash()]);
        $panel->entry();
    }
}

Вот и все!

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

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

https://yoursite.com/firewall/panel/

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

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