CodeIgniter

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.

Pare-feu dans le framework CodeIgniter

Installation

Utilisez PHP Composer :

composer require shieldon/shieldon

Cela installera également les dépendances requises pour Shieldon :

  • shieldon/psr-http Implémentation PSR-7, 15, 17 avec une documentation complète et des tests approfondis.
  • shieldon/event-dispatcher Le gestionnaire d'événements le plus simple.
  • shieldon/web-security Une collection de fonctions liées à la sécurité web.
  • shieldon/messenger Une collection de modules pour l'envoi de messages à des API ou des services tiers, tels que Telegram, Line, RocketChat, Slack, SendGrid, MailGun, et plus encore.

Implémentation

  • CodeIgniter 3
  • CodeIgniter 4

CodeIgniter 3

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.

1. MY_Controller

Créez un fichier appelé MY_Controller.php dans le dossier core.

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

2. Initialiser l'instance du pare-feu

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';

3. Définir un contrôleur pour le panneau de contrôle

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/

CodeIgniter 4

1. Enregistrer un filtre.

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'
    ],
];

2. Définir un contrôleur pour le panneau de contrôle du pare-feu

<?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.

Panneau de Contrôle

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.