CodeIgniter

CodeIgniter è un framework MVC leggero. Inizierò discutendo di CodeIgniter 3 poiché la sua versione 4 presenta differenze significative rispetto alle versioni precedenti.

In questa guida, condividerò alcuni suggerimenti per implementare il firewall Shieldon nella tua applicazione CodeIgniter.

Firewall nel framework CodeIgniter

Installazione

Utilizza PHP Composer:

composer require shieldon/shieldon

Questo installerà anche le dipendenze richieste per Shieldon:

  • shieldon/psr-http Implementazione completa di PSR-7, 15, 17 con documentazione dettagliata e ampi test.
  • shieldon/event-dispatcher Il dispatcher di eventi più semplice.
  • shieldon/web-security Una raccolta di funzioni relative alla sicurezza web.
  • shieldon/messenger Una raccolta di moduli per l'invio di messaggi ad API o servizi di terze parti, come Telegram, Line, RocketChat, Slack, SendGrid, MailGun e altri.

Implementazione

  • CodeIgniter 3
  • CodeIgniter 4

CodeIgniter 3

CodeIgniter 3 ha un controller centrale chiamato CI_Controller che gestisce il suo modello architetturale MVC (Model-View-Controller).

Consiglio vivamente di creare un controller padre chiamato MY_Controller nella cartella core e aggiungere il codice iniziale ad esso.

1. MY_Controller

Creiamo un file chiamato MY_Controller.php nella cartella core.

class MY_Controller extends CI_Controller
{
    /**
     * Costruttore.
     */
    public function __construct()
    {
        parent::__construct();
    }
}

2. Inizializza l'istanza del firewall

Inserisci il codice iniziale nel costruttore in modo che qualsiasi controller che estende MY_Controller abbia il firewall Shieldon inizializzato e il metodo $this->firewall() disponibile.

class MY_Controller extends CI_Controller
{
    /**
     * Costruttore.
     */
    public function __construct()
    {
        parent::__construct();

        // Autoloader di Composer
        require_once APPPATH . '../vendor/autoload.php';

        // Questa directory deve essere scrivibile.
        $storage = APPPATH . 'cache/shieldon_firewall';

        $firewall = new \Shieldon\Firewall\Firewall();
        $firewall->configure($storage);

        // L'URL base per il pannello di controllo.
        $firewall->controlPanel('/firewall/panel/');

        $response = $firewall->run();

        if ($response->getStatusCode() !== 200) {
            $httpResolver = new \Shieldon\Firewall\HttpResolver();
            $httpResolver($response);
        }
    }

    /**
     * Protezione del firewall Shieldon.
     */
    public function firewall()
    {
        $firewall = \Shieldon\Container::get('firewall');
        $firewall->run();
    }
}

Promemoria

Per una sicurezza ottimale, sia la cartella di sistema che quella dell'applicazione dovrebbero essere posizionate al di sopra della root web in modo che non siano accessibili direttamente tramite un browser.

Se la tua cartella dell'applicazione si trova allo stesso livello di index.php, sposta la directory $storage in una posizione sicura. Ad esempio:

$storage =  APPPATH . '../shieldon';

3. Definisci un controller per il pannello di controllo

Abbiamo bisogno di un controller per accedere al pannello di controllo del firewall Shieldon, in questo esempio definiamo un controller chiamato Firewall.

class Firewall extends MY_Controller
{
    public function __construct()
    {
        parent::__construct();
    }

    /**
     * Questa è l'entrata al nostro pannello di controllo del firewall.
     */
    public function panel()
    {
        $panel = new \Shieldon\Firewall\Panel();
        $panel->entry();
    }
}

Ora puoi accedere al pannello di controllo del firewall utilizzando l'URL seguente:

https://yoursite.com/firewall/panel/

CodeIgniter 4

1. Registra un filtro.

Nel file app/Config/Filters.php, aggiungi il seguente codice alla proprietà $aliases:

'firewall' => \Shieldon\Firewall\Intergration\CodeIgniter4::class,

Successivamente, aggiungi la stringa firewall alla proprietà $globals, all'interno dell'array before:

public $globals = [
    'before' => [
        'firewall'
    ],
];

2. Definisci un controller per il pannello di controllo del 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();
    }
}

Questo è tutto!

Puoi accedere al pannello di controllo del firewall su /firewall/panel. Per visualizzare la pagina, vai a questo URL nel tuo browser.

Pannello di Controllo

https://yoursite.com/firewall/panel/

Il login predefinito è shieldon_user e la password è shieldon_pass. Dopo aver effettuato l'accesso al pannello di controllo del firewall, la prima cosa da fare è cambiare il login e la password.

Se il firewall Shieldon è abilitato nella sezione delle impostazioni Daemon, inizierà a monitorare il tuo sito web. Assicurati di aver configurato correttamente le impostazioni.