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.
Utilizza PHP Composer:
composer require shieldon/shieldon
Questo installerà anche le dipendenze richieste per Shieldon:
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.
Creiamo un file chiamato MY_Controller.php
nella cartella core
.
class MY_Controller extends CI_Controller
{
/**
* Costruttore.
*/
public function __construct()
{
parent::__construct();
}
}
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';
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/
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'
],
];
<?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.
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.