Symfony es un conjunto de componentes PHP reutilizables y un framework PHP utilizado para construir aplicaciones web, APIs, microservicios y servicios web.
Esta guía ha sido probada exitosamente en la versión 4.3
, pero también debería funcionar con versiones anteriores.
Symfony no tiene un concepto de middleware, por lo tanto, puedes crear un controlador padre para implementar Shieldon Firewall siguiendo los mismos pasos que en nuestra guía de CodeIgniter.
Si no deseas inicializar Shieldon Firewall en un controlador padre, puedes seguir los pasos del modo Bootstrap proporcionados a continuación.
Utiliza PHP Composer:
composer require shieldon/shieldon
Esto también instalará las dependencias requeridas para Shieldon:
En tu archivo config/bootstrap.php
, después de esta línea:
require dirname(__DIR__).'/vendor/autoload.php';
Añade el siguiente código:
Ejemplo:
/*
|--------------------------------------------------------------------------
| Ejecutar el Firewall de Shieldon
|--------------------------------------------------------------------------
|
| El Firewall de Shieldon observará todas las solicitudes HTTP que lleguen a tu sitio web.
*/
if (isset($_SERVER['REQUEST_URI'])) {
// Este directorio debe tener permisos de escritura.
$storage = __DIR__ . '/../storage/shieldon';
$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);
}
}
Crea un controlador llamado FirewallPanelController
ejecutando el siguiente comando.
Ejemplo:
php bin/console make:controller FirewallPanelController
Añade las siguientes líneas en la clase de controlador FirewallPanelController
:
Ejemplo:
$panel = new \Shieldon\Firewall\Panel();
$panel->entry();
Si tienes CSRF habilitado, añade estas líneas:
Ejemplo:
$csrf = $this->container->get('security.csrf.token_manager');
$token = $csrf->refreshToken('key');
El ejemplo completo se verá así:
Ejemplo:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Routing\Annotation\Route;
class FirewallPanelController extends AbstractController
{
/**
* @Route("/firewall/panel/", name="firewall_panel")
*/
public function panel()
{
$panel = new \Shieldon\Firewall\Panel();
// Si tienes instalado `symfony/security-csrf`.
$csrf = $this->container->get('security.csrf.token_manager');
$token = $csrf->refreshToken('key')->getValue();
$panel->csrf(['_token' => $token]);
$panel->entry();
exit;
}
/**
* @Route("/firewall/panel/{class}/{method}", name="firewall_panel_page")
*/
public function page()
{
$this->panel();
}
}
Eso es todo.
Puedes acceder al panel de control del firewall a través de /firewall/panel
, para ver la página, visita esta URL en tu navegador.
https://tuweb.com/firewall/panel
El inicio de sesión por defecto 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 del Daemon
, comenzará a monitorear tu sitio web. Asegúrate de haber configurado correctamente las opciones.