Yii 2

En esta guía, te proporcionaré algunas ideas sobre cómo implementar el Firewall Shieldon en tu aplicación Yii.

Firewall en el Framework Yii

Instalación

Utiliza PHP Composer:

composer require shieldon/shieldon

Esto también instalará las dependencias necesarias para Shieldon:

  • shieldon/psr-http La implementación de PSR-7, 15, 17 con documentación completa y pruebas extensas.
  • 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

Yii 2

1. Antes de inicializar el Kernel

En tu archivo public/index.php, antes de esta línea:

require __DIR__ . '/../vendor/yiisoft/yii2/Yii.php';

Agrega el siguiente código:

Ejemplo:

/*
|--------------------------------------------------------------------------
| Ejecutar el Firewall Shieldon
|--------------------------------------------------------------------------
|
| El Firewall Shieldon vigilará todas las solicitudes HTTP que lleguen a tu sitio web.
| Ejecutar el Firewall Shieldon antes de inicializar Yii evitará posibles conflictos con las funciones incorporadas de Yii.
*/

if (isset($_SERVER['REQUEST_URI'])) {
    $storage = __DIR__ . '/../runtime/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);
    }
}

2. Definir una Ruta para el Panel del Firewall

Crea un controlador llamado FirewallPanelController.

Ejemplo:

<?php

namespace app\controllers;

use yii\web\Controller;

class FirewallController extends Controller
{
    public function beforeAction($action)
    {
        $this->enableCsrfValidation = false;

        return parent::beforeAction($action);
    }

    /**
     * El punto de entrada del Panel del Firewall.
     *
     * @return string
     */
    public function actionPanel()
    {
        $panel = new \Shieldon\Firewall\Panel();
        $panel->entry();
    }
}

Asegúrate de que enablePrettyUrl esté configurado como true en tu archivo config/web.php.

Ejemplo:

'urlManager' => [
    'enablePrettyUrl' => true,
    'showScriptName' => false,
    'rules' => [
        'firewall/panel/' => 'firewall/panel',
        'firewall/panel/<slug:.*>' => 'firewall/panel',
    ],
],

Eso es todo.

Puedes acceder al Panel del Firewall visitando /firewall-panel en tu navegador.

Panel de Control

https://yourwebsite.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 del Firewall, lo primero que debes hacer es cambiar el inicio de sesión y la contraseña.

Si el Firewall Shieldon está habilitado en la sección de configuración Daemon, comenzará a monitorear tu sitio web. Asegúrate de haber configurado correctamente los ajustes.