CakePHP

CakePHP es un framework web de código abierto ampliamente utilizado que sigue el patrón arquitectónico MVC. Goza de gran reputación en la comunidad de PHP y ofrece una variedad de características y herramientas para construir aplicaciones web.

Esta guía ha sido probada con éxito en la versión 3.8 de CakePHP. Sin embargo, también debería ser aplicable a versiones anteriores del framework.

Firewall en el framework CakePHP

Instalación

Utiliza PHP Composer:

composer require shieldon/shieldon

Esto también instalará las dependencias requeridas por Shieldon:

  • shieldon/psr-http La implementación de PSR-7, 15, 17 con documentación completa y extensas pruebas.
  • shieldon/event-dispatcher El despachador de eventos más simple.
  • shieldon/web-security Una colección de funciones relacionadas con la seguridad web.
  • shieldon/messenger Una colección de módulos para enviar mensajes a APIs o servicios de terceros, como Telegram, Line, RocketChat, Slack, SendGrid, MailGun, y más.

Implementación

CakePHP 3

El paso 1 y el paso 2 se aplican al mismo archivo ubicado en /config/route.php.

Tanto el paso 1 como el paso 2 implican modificar el mismo archivo ubicado en /config/routes.php. Por lo tanto, deberás realizar los siguientes pasos dentro de ese archivo:

  • Abre el archivo /config/routes.php.
  • Localiza la sección donde defines las rutas de tu aplicación.
  • Implementa los cambios descritos en el paso 1 y el paso 2 según las instrucciones proporcionadas.
  • Guarda los cambios en el archivo /config/routes.php.

Siguiendo estos pasos, asegurarás que ambas modificaciones se realicen en el archivo adecuado.

1. Registrar un Middleware

Ya se ha preparado un middleware para CakePHP aquí. Solo tienes que registrarlo en tu aplicación.

Ejemplo:

/**
 * Aplicar Shieldon Firewall al ámbito de la ruta actual.
 */
$routes->registerMiddleware(
    'firewall',
    new \Shieldon\Firewall\Integration\CakePhp()
);

$routes->applyMiddleware('firewall');

2. Definir una Ruta para el Panel de Firewall

Ejemplo:

/**
 * Definir la ruta para el panel de firewall.
 */
$routes->connect('/firewall/panel/', [
    'controller' => 'FirewallPanel',
    'action' => 'entry'
]);

3. Crear un Controlador para el Panel de Firewall

Crea un controlador llamado FirewallPanelController y agrega el siguiente código a él.

Ejemplo:

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

Si tienes CSRF habilitado, agrega estas líneas:

Ejemplo:

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

El ejemplo completo se verá así:

Ejemplo:

<?php

namespace App\Controller;

class FirewallPanelController extends AppController
{
    /**
     * Este es el punto de entrada de nuestro Panel de Firewall.
     */
    public function entry()
    {
        // Acceder al Panel de Firewall.
        $panel = new \Shieldon\Firewall\Panel();

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

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

Eso es todo.

Puedes acceder al Panel de Firewall en /firewall/panel. Para ver la página, abre esta URL en tu navegador.

Panel de Control

https://for.example.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 el Firewall de Shieldon está habilitado en la sección de configuración del "Daemon", comenzará a monitorear tu sitio web. Asegúrate de haber configurado correctamente la configuración.