El framework Slim es uno de mis favoritos. Dado que Slim es un micro-framework, implementar el Firewall de Shieldon también es fácil. Sin más preámbulos, empecemos.
Usa PHP Composer:
composer require shieldon/shieldon
Esto también instalará las dependencias requeridas para Shieldon:
Puedes crear un Middleware tú mismo o simplemente usar la clase de integración.
Ejemplo:
class FirewallMiddleware
{
/**
* Ejemplo de clase invocable para el Middleware
*
* @param ServerRequest $request Solicitud PSR-7
* @param RequestHandler $handler Manejador de solicitudes PSR-15
*
* @return Response
*/
public function __invoke(Request $request, RequestHandler $handler): Response
{
$response = $handler->handle($request);
$firewall = new \Shieldon\Firewall\Firewall($request, $response);
// El directorio en el que el Firewall de Shieldon colocará sus archivos.
$firewall->configure(__DIR__ . '/../cache/shieldon_firewall');
$response = $firewall->run();
if ($response->getStatusCode() !== 200) {
$httpResolver = new \Shieldon\Firewall\HttpResolver();
$httpResolver($response);
}
return $response;
}
}
Por ejemplo, si estás usando el framework Slim 4, el código debería verse así.
Ejemplo:
$app->add(new FirewallMiddleware());
O, si prefieres usar la clase de integración, aquí tienes el código.
Ejemplo:
$app->add(new \Shieldon\Firewall\Integration\Slim4);
Por ejemplo, si estás usando el framework Slim 4, el código debería verse así. Luego podrás acceder a la URL https://tusitio.com/firewall/panel/
para iniciar sesión en el panel de control.
Ejemplo:
$app->any('/firewall/panel[/{params:.*}]', function (Request $request, Response $response, $args) {
$firewall = new \Shieldon\Firewall\Firewall($request);
// El directorio en el que el Firewall de Shieldon colocará sus archivos.
// Debe ser el mismo que el del Middleware del Firewall.
$firewall->configure(__DIR__ . '/../cache/shieldon_firewall');
// La URL base para el panel de control.
$firewall->controlPanel('/firewall/panel/');
$panel = new \Shieldon\Firewall\Panel();
// Comienzo - Configurar campos CSRF si has habilitado Slim-CSRF
$csrf = new \Slim\Csrf\Guard();
$nameKey = $csrf->getTokenNameKey();
$valueKey = $csrf->getTokenValueKey();
$csrfName = $request->getAttribute('csrf_name');
$csrfVale = $request->getAttribute('csrf_value');
$panel->csrf(
[$nameKey => $csrfName],
[$valueKey => $csrfVale]
);
// Fin - Slim-CSRF
$panel->entry();
});
Nota:
POST
y GET
deben aplicarse a tu sitio web.POST
es necesario para resolver CAPTCHAs por parte de los usuarios que fueron bloqueados temporalmente.Eso es todo.
Shieldon tiene una clase de integración lista para este Middleware, simplemente úsala siguiendo los siguientes pasos.
Ejemplo:
$app->add(new \Shieldon\Firewall\Integration\Slim3);
Por ejemplo, si estás usando el esqueleto de Slim 3, el código en middleware.php
se verá así:
Ejemplo:
<?php
use Slim\App;
return function (App $app) {
$app->add(new \Shieldon\Firewall\Integration\Slim3);
$app->add(new \Slim\Csrf\Guard);
};
Por ejemplo, si estás usando el framework Slim 4, el código debería verse así. Luego podrás acceder a la URL https://tusitio.com/firewall/panel/
para iniciar sesión en el panel de control.
Ejemplo:
$app->map(['GET', 'POST'], '/firewall/panel[/{params:.*}]', function (Request $request, Response $response, array $args) {
$firewall = new \Shieldon\Firewall\Firewall($request);
// El directorio en el que el Firewall de Shieldon colocará sus archivos.
// Debe ser el mismo que el del Middleware del Firewall.
$firewall->configure(__DIR__ . '/../cache/shieldon_firewall');
// La URL base para el panel de control.
$firewall->controlPanel('/firewall/panel/');
$panel = new \Shieldon\Firewall\Panel();
// Comienzo - Configurar campos CSRF si has habilitado Slim-CSRF
$csrf = new \Slim\Csrf\Guard();
$nameKey = $csrf->getTokenNameKey();
$valueKey = $csrf->getTokenValueKey();
$csrfName = $request->getAttribute('csrf_name');
$csrfVale = $request->getAttribute('csrf_value');
$panel->csrf(
[$nameKey => $csrfName],
[$valueKey => $csrfVale]
);
// Fin - Slim-CSRF
$panel->entry();
});
Eso es todo.
Puedes acceder al Panel de Control del Firewall mediante /firewall/panel/
, para ver la página, visita esta URL en tu navegador.
https://tusitio.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 Control del 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 Daemon
, comenzará a monitorear tu sitio web. Asegúrate de haber configurado correctamente las opciones.