CodeIgniter - это легкий MVC-фреймворк. Сначала я расскажу о CodeIgniter 3, поскольку его версия 4 имеет значительные отличия от предыдущих версий.
В этом руководстве я поделюсь некоторыми советами по внедрению брандмауэра Shieldon в вашем приложении CodeIgniter.
Используйте PHP Composer:
composer require shieldon/shieldon
Это также установит зависимости, необходимые для Shieldon:
У CodeIgniter 3 есть основной контроллер с именем CI_Controller
, который обрабатывает его архитектурный шаблон MVC (Model-View-Controller).
Я настоятельно рекомендую создать родительский контроллер с именем MY_Controller
в папке core
и добавить в него начальный код.
Создайте файл с именем MY_Controller.php
в папке core
.
class MY_Controller extends CI_Controller
{
/**
* Конструктор.
*/
public function __construct()
{
parent::__construct();
}
}
Добавьте начальный код в конструктор, чтобы каждый контроллер, расширяющий 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';
Нам понадобится контроллер, чтобы получить доступ к панели управления брандмауэром 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/
В файле app/Config/Filters.php
добавьте следующий код в свойство $aliases
:
'firewall' => \Shieldon\Firewall\Intergration\CodeIgniter4::class,
Затем добавьте строку firewall в свойство $globals
, в массиве before:
public $globals = [
'before' => [
'firewall'
],
];
<?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
, он начнет мониторинг вашего веб-сайта. Убедитесь, что вы правильно настроили настройки.