CodeIgniter es un framework MVC ligero. Primero discutiré sobre CodeIgniter 3, ya que su versión 4 tiene diferencias significativas con las versiones anteriores.
En esta guía, compartiré algunos consejos para implementar Shieldon Firewall en tu aplicación de CodeIgniter.
Utiliza PHP Composer:
composer require shieldon/shieldon
Esto también instalará las dependencias necesarias para Shieldon:
CodeIgniter 3 tiene un controlador central llamado CI_Controller
que maneja su patrón arquitectónico MVC (Modelo-Vista-Controlador).
Recomiendo crear un controlador padre llamado MY_Controller
en la carpeta core
y agregar el código inicial en él.
Creemos un archivo llamado MY_Controller.php
en la carpeta core
.
class MY_Controller extends CI_Controller
{
/**
* Constructor.
*/
public function __construct()
{
parent::__construct();
}
}
Coloca el código inicial en el constructor para que cualquier controlador que extienda MY_Controller
tenga Shieldon Firewall inicializado y el método $this->firewall()
disponible.
class MY_Controller extends CI_Controller
{
/**
* Constructor.
*/
public function __construct()
{
parent::__construct();
// Autocargador de Composer
require_once APPPATH . '../vendor/autoload.php';
// Este directorio debe tener permisos de escritura.
$storage = APPPATH . 'cache/shieldon_firewall';
$firewall = new \Shieldon\Firewall\Firewall();
$firewall->configure($storage);
// La URL base para el panel de control.
$firewall->controlPanel('/firewall/panel/');
$response = $firewall->run();
if ($response->getStatusCode() !== 200) {
$httpResolver = new \Shieldon\Firewall\HttpResolver();
$httpResolver($response);
}
}
/**
* Protección de Shieldon Firewall.
*/
public function firewall()
{
$firewall = \Shieldon\Container::get('firewall');
$firewall->run();
}
}
Recordatorio
Para una seguridad óptima, tanto las carpetas del sistema como de la aplicación deben ubicarse por encima de la raíz web para que no sean accesibles directamente a través del navegador.
Si la carpeta de tu aplicación está al mismo nivel que el archivo index.php, por favor mueve el directorio $storage
a una ubicación segura. Por ejemplo:
$storage = APPPATH . '../shieldon';
Necesitamos un controlador para acceder al panel de control de Shieldon Firewall, en este ejemplo, vamos a definir un controlador llamado Firewall
.
class Firewall extends MY_Controller
{
public function __construct()
{
parent::__construct();
}
/**
* Esta es la entrada de nuestro panel de Firewall.
*/
public function panel()
{
$panel = new \Shieldon\Firewall\Panel();
$panel->entry();
}
}
Ahora puedes acceder al panel de Firewall utilizando la siguiente URL:
https://yoursite.com/firewall/panel/
En tu archivo app/Config/Filters.php
, agrega el siguiente código a la propiedad $aliases
:
'firewall' => \Shieldon\Firewall\Intergration\CodeIgniter4::class,
A continuación, agrega la cadena firewall a la propiedad $globals
, dentro del 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();
}
}
¡Eso es todo!
Puedes acceder al panel de Firewall en /firewall/panel
. Para ver la página, visita esta URL en tu navegador.
https://yoursite.com/firewall/panel/
El inicio de sesión predeterminado es shieldon_user
y la contraseña es shieldon_pass
. Después de iniciar sesión en el panel de Firewall, lo primero que debes hacer es cambiar el inicio de sesión y la contraseña.
Si Shieldon Firewall está habilitado en la sección de configuración Daemon
, comenzará a monitorear tu sitio web. Asegúrate de haber configurado correctamente los ajustes.