CodeIgniter é um framework MVC leve. Vou discutir primeiro o CodeIgniter 3, já que sua versão 4 possui diferenças significativas em relação às versões anteriores.
Neste guia, vou compartilhar algumas dicas para implementar o Firewall Shieldon em sua aplicação CodeIgniter.
Use o Composer PHP:
composer require shieldon/shieldon
Isso também instalará as dependências necessárias para o Shieldon:
O CodeIgniter 3 possui um controlador central chamado CI_Controller
que lida com seu padrão arquitetural MVC (Model-View-Controller).
Recomendo criar um controlador pai chamado MY_Controller
na pasta core
e adicionar o código inicial a ele.
Vamos criar um arquivo chamado MY_Controller.php
na pasta core
.
class MY_Controller extends CI_Controller
{
/**
* Construtor.
*/
public function __construct()
{
parent::__construct();
}
}
Coloque o código inicial no construtor para que qualquer controlador que estenda o MY_Controller
tenha o Firewall Shieldon inicializado e o método $this->firewall()
disponível.
class MY_Controller extends CI_Controller
{
/**
* Construtor.
*/
public function __construct()
{
parent::__construct();
// Autoloader do Composer
require_once APPPATH . '../vendor/autoload.php';
// Este diretório deve ter permissão de escrita.
$storage = APPPATH . 'cache/shieldon_firewall';
$firewall = new \Shieldon\Firewall\Firewall();
$firewall->configure($storage);
// A URL base para o painel de controle.
$firewall->controlPanel('/firewall/panel/');
$response = $firewall->run();
if ($response->getStatusCode() !== 200) {
$httpResolver = new \Shieldon\Firewall\HttpResolver();
$httpResolver($response);
}
}
/**
* Proteção do Firewall Shieldon.
*/
public function firewall()
{
$firewall = \Shieldon\Container::get('firewall');
$firewall->run();
}
}
Lembrete
Para segurança ideal, tanto a pasta do sistema quanto a pasta da aplicação devem estar acima da raiz do site, para que não sejam acessíveis diretamente pelo navegador.
Se a pasta da aplicação estiver no mesmo nível do index.php, mova o diretório $storage
para um local seguro. Por exemplo:
$storage = APPPATH . '../shieldon';
Precisamos de um controlador para acessar o painel de controle do Firewall Shieldon. Neste exemplo, vamos definir um controlador chamado Firewall
.
class Firewall extends MY_Controller
{
public function __construct()
{
parent::__construct();
}
/**
* Esta é a entrada do nosso Painel de Firewall.
*/
public function panel()
{
$panel = new \Shieldon\Firewall\Panel();
$panel->entry();
}
}
Agora, você pode acessar o Painel de Firewall usando a seguinte URL:
https://seusite.com/firewall/panel/
No arquivo app/Config/Filters.php
, adicione o seguinte código à propriedade $aliases
:
'firewall' => \Shieldon\Firewall\Intergration\CodeIgniter4::class,
Em seguida, adicione a string firewall à propriedade $globals
, dentro do array 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();
}
}
É isso!
Você pode acessar o Painel de Firewall em /firewall/panel
. Para visualizar a página, acesse esta URL em seu navegador.
https://seusite.com/firewall/panel/
O login padrão é shieldon_user
e a senha é shieldon_pass
. Após fazer login no Painel de Firewall, a primeira coisa que você deve fazer é alterar o login e a senha.
Se o Firewall Shieldon estiver habilitado na seção de configuração Daemon
, ele começará a monitorar seu site. Verifique se você configurou corretamente as configurações.