CodeIgniter est un framework MVC léger. Je vais d'abord parler de CodeIgniter 3 car sa version 4 présente des différences significatives par rapport aux versions précédentes.
Dans ce guide, je vais partager quelques astuces pour implémenter le pare-feu Shieldon dans votre application CodeIgniter.
Utilisez PHP Composer :
composer require shieldon/shieldon
Cela installera également les dépendances requises pour Shieldon :
CodeIgniter 3 dispose d'un contrôleur central appelé CI_Controller
qui gère son modèle architectural MVC (Modèle-Vue-Contrôleur).
Je recommande vivement de créer un contrôleur parent appelé MY_Controller
dans le dossier core
et d'y ajouter le code initial.
Créez un fichier appelé MY_Controller.php
dans le dossier core
.
class MY_Controller extends CI_Controller
{
/**
* Constructeur.
*/
public function __construct()
{
parent::__construct();
}
}
Placez le code initial dans le constructeur de sorte que tout contrôleur étendant MY_Controller
ait le pare-feu Shieldon initialisé et la méthode $this->firewall()
disponible.
class MY_Controller extends CI_Controller
{
/**
* Constructeur.
*/
public function __construct()
{
parent::__construct();
// Autoloader Composer
require_once APPPATH . '../vendor/autoload.php';
// Ce répertoire doit être accessible en écriture.
$storage = APPPATH . 'cache/shieldon_firewall';
$firewall = new \Shieldon\Firewall\Firewall();
$firewall->configure($storage);
// L'URL de base pour le panneau de contrôle.
$firewall->controlPanel('/firewall/panel/');
$response = $firewall->run();
if ($response->getStatusCode() !== 200) {
$httpResolver = new \Shieldon\Firewall\HttpResolver();
$httpResolver($response);
}
}
/**
* Protection du pare-feu Shieldon.
*/
public function firewall()
{
$firewall = \Shieldon\Container::get('firewall');
$firewall->run();
}
}
Rappel
Pour une sécurité optimale, les dossiers système et d'application doivent être placés au-dessus de la racine web afin de ne pas être accessibles directement via un navigateur.
Si votre dossier d'application se trouve au même niveau que le fichier index.php, veuillez déplacer le répertoire $storage
vers un emplacement sécurisé. Par exemple :
$storage = APPPATH . '../shieldon';
Nous avons besoin d'un contrôleur pour accéder au panneau de contrôle du pare-feu Shieldon. Dans cet exemple, nous définissons un contrôleur appelé Firewall
.
class Firewall extends MY_Controller
{
public function __construct()
{
parent::__construct();
}
/**
* C'est l'entrée de notre panneau de contrôle du pare-feu.
*/
public function panel()
{
$panel = new \Shieldon\Firewall\Panel();
$panel->entry();
}
}
Maintenant, vous pouvez accéder au panneau de contrôle du pare-feu en utilisant l'URL suivante :
https://yoursite.com/firewall/panel/
Dans votre fichier app/Config/Filters.php
, ajoutez le code suivant à la propriété $aliases
:
'firewall' => \Shieldon\Firewall\Intergration\CodeIgniter4::class,
Ensuite, ajoutez la chaîne firewall à la propriété $globals
, dans le tableau 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();
}
}
C'est tout !
Vous pouvez accéder au panneau de contrôle du pare-feu à l'adresse /firewall/panel
. Pour afficher la page, rendez-vous sur cette URL dans votre navigateur.
https://yoursite.com/firewall/panel/
La connexion par défaut est shieldon_user
et le mot de passe est shieldon_pass
. Après vous être connecté au panneau de contrôle du pare-feu, la première chose à faire est de changer le nom d'utilisateur et le mot de passe.
Si le pare-feu Shieldon est activé dans la section Daemon
des paramètres, il commencera à surveiller votre site web. Assurez-vous d'avoir correctement configuré les paramètres.