Slim

Slim est l'un de mes frameworks préférés. Étant donné que Slim est un micro-framework, l'implémentation du pare-feu Shieldon est également facile. Sans plus tarder, commençons.

Firewall dans Slim Framework

Installation

Utilisez PHP Composer :

composer require shieldon/shieldon

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

  • shieldon/psr-http L'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 services tiers, tels que Telegram, Line, RocketChat, Slack, SendGrid, MailGun, et plus encore.

Implémentation

Slim 4

(1) Créer un Middleware pour le pare-feu.

Vous pouvez créer votre propre Middleware ou simplement utiliser la classe d'intégration.

Exemple :

class MiddlewarePareFeu
{
    /**
     * Exemple de classe invocable pour le Middleware
     *
     * @param ServerRequest  $request Requête PSR-7
     * @param RequestHandler $handler Gestionnaire de requêtes PSR-15
     *
     * @return Response
     */
    public function __invoke(Request $request, RequestHandler $handler): Response
    {
        $response = $handler->handle($request);

        $firewall = new \Shieldon\Firewall\Firewall($request, $response);

        // Le répertoire où le pare-feu Shieldon placera ses fichiers.
        $firewall->configure(__DIR__ . '/../cache/shieldon_firewall');
        $response = $firewall->run();

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

        return $response;
    }
}

(2) Ajouter le Middleware du pare-feu dans votre Application.

Par exemple, si vous utilisez le framework Slim 4, le code devrait ressembler à ceci.

Exemple :

$app->add(new MiddlewarePareFeu());

Ou, si vous préférez utiliser la classe d'intégration, voici le code.

Exemple :

$app->add(new \Shieldon\Firewall\Integration\Slim4);

(3) Créer une Route pour le Panneau de Contrôle.

Par exemple, si vous utilisez le framework Slim 4, le code devrait ressembler à ceci. Vous pourrez ensuite accéder à l'URL https://votresite.com/firewall/panel/ pour vous connecter au panneau de contrôle.

Exemple :

$app->any('/firewall/panel[/{params:.*}]', function (Request $request, Response $response, $args) {

    $firewall = new \Shieldon\Firewall\Firewall($request);

    // Le répertoire où le pare-feu Shieldon placera ses fichiers.
    // Doit être le même que celui du Middleware du pare-feu.
    $firewall->configure(__DIR__ . '/../cache/shieldon_firewall');

    // L'URL de base pour le panneau de contrôle.
    $firewall->controlPanel('/firewall/panel/');

    $panel = new \Shieldon\Firewall\Panel();

    // Début - Configuration des champs CSRF si vous avez activé Slim-CSRF

    $csrf = new \Slim\Csrf\Guard();
    $nameKey = $csrf->getTokenNameKey();
    $valueKey = $csrf->getTokenValueKey();

    $csrfName = $request->getAttribute('csrf_name');
    $csrfVale = $request->getAttribute('csrf_value');

    $panel->csrf(
        [$nameKey => $csrfName],
        [$valueKey => $csrfVale]
    );

    // Fin - Slim-CSRF

    $panel->entry();
});

Note :

  • Les méthodes HTTP POST et GET doivent toutes deux être appliquées à votre site web.
  • La méthode POST est nécessaire pour résoudre les CAPTCHA par les utilisateurs temporairement bloqués.

C'est tout.

Slim 3

(1) Ajouter le Middleware du pare-feu dans votre Application.

Shieldon propose une classe d'intégration prête à l'emploi pour ce Middleware, il suffit de l'utiliser en suivant les étapes suivantes.

Exemple :

$app->add(new \Shieldon\Firewall\Integration\Slim3);

Par exemple, si vous utilisez le squelette Slim 3, le code dans middleware.php ressemblera à ceci :

Exemple :

<?php

use Slim\App;

return function (App $app) {
    $app->add(new \Shieldon\Firewall\Integration\Slim3);
    $app->add(new \Slim\Csrf\Guard);
};

(2) Créer une Route pour le Panneau de Contrôle.

Par exemple, si vous utilisez le framework Slim 4, le code devrait ressembler à ceci. Vous pourrez ensuite accéder à l'URL https://votresite.com/firewall/panel/ pour vous connecter au panneau de contrôle.

Exemple :

$app->map(['GET', 'POST'], '/firewall/panel[/{params:.*}]', function (Request $request, Response $response, array $args) {

    $firewall = new \Shieldon\Firewall\Firewall($request);

    // Le répertoire où le pare-feu Shieldon placera ses fichiers.
    // Doit être le même que celui du Middleware du pare-feu.
    $firewall->configure(__DIR__ . '/../cache/shieldon_firewall');

    // L'URL de base pour le panneau de contrôle.
    $firewall->controlPanel('/firewall/panel/');

    $panel = new \Shieldon\Firewall\Panel();

    // Début - Configuration des champs CSRF si vous avez activé Slim-CSRF

    $csrf = new \Slim\Csrf\Guard();
    $nameKey = $csrf->getTokenNameKey();
    $valueKey = $csrf->getTokenValueKey();

    $csrfName = $request->getAttribute('csrf_name');
    $csrfVale = $request->getAttribute('csrf_value');

    $panel->csrf(
        [$nameKey => $csrfName],
        [$valueKey => $csrfVale]
    );

    // Fin - Slim-CSRF

    $panel->entry();
});

C'est tout.

Panneau de Contrôle

Vous pouvez accéder au Panneau de Contrôle du Pare-feu via /firewall/panel/. Pour voir la page, rendez-vous à cette URL dans votre navigateur.

https://votresite.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 modifier le nom d'utilisateur et le mot de passe.

Si le pare-feu Shieldon est activé dans la section de configuration Daemon, il commencera à surveiller votre site web. Assurez-vous d'avoir correctement configuré les paramètres.