CakePHP

CakePHP est un framework web open-source largement utilisé qui suit le modèle d'architecture MVC. Il est très apprécié au sein de la communauté PHP et propose une gamme de fonctionnalités et d'outils pour la création d'applications web.

Ce guide a été testé avec succès avec la version 3.8 de CakePHP. Cependant, il devrait également être applicable aux versions plus anciennes du framework.

Firewall dans le framework CakePHP

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

Mise en œuvre

CakePHP 3

Les étapes 1 et 2 sont appliquées sur le même fichier situé à /config/route.php.

Les étapes 1 et 2 impliquent toutes deux des modifications du même fichier situé à /config/routes.php. Par conséquent, vous devrez effectuer les étapes suivantes dans ce fichier :

  • Ouvrez le fichier /config/routes.php.
  • Localisez la section où vous définissez les routes de votre application.
  • Mettez en œuvre les modifications décrites dans les étapes 1 et 2 conformément aux instructions fournies.
  • Enregistrez les modifications dans le fichier /config/routes.php.

En suivant ces étapes, vous vous assurez que les deux modifications sont apportées au fichier approprié.

1. Enregistrer un Middleware

Un middleware pour CakePHP est disponible ici. Enregistrez-le simplement dans votre application.

Exemple :

/**
 * Appliquer le pare-feu Shieldon à la portée de route actuelle.
 */
$routes->registerMiddleware(
    'firewall',
    new \Shieldon\Firewall\Integration\CakePhp()
);

$routes->applyMiddleware('firewall');

2. Définir une Route pour le Panneau de Firewall

Exemple :

/**
 * Définir la route pour le panneau de firewall.
 */
$routes->connect('/firewall/panel/', [
    'controller' => 'FirewallPanel',
    'action' => 'entry'
]);

3. Créer un Contrôleur pour le Panneau de Firewall

Créez un contrôleur nommé FirewallPanelController et ajoutez le code suivant à celui-ci.

Exemple :

$panel = new \Shieldon\Firewall\Panel();
$panel->entry();
exit;

Si vous avez activé la protection CSRF, ajoutez ces lignes :

Exemple :

$panel->csrf(
    '_csrfToken',
    $this->request->getParam('_csrfToken')
);

L'exemple complet ressemblera à ceci :

Exemple :

<?php

namespace App\Controller;

class FirewallPanelController extends AppController
{
    /**
     * C'est l'entrée de notre panneau de pare-feu.
     */
    public function entry()
    {
        // Accéder au panneau de pare-feu.
        $panel = new \Shieldon\Firewall\Panel();

        $panel->csrf([
            '_csrfToken' => $this->request->getParam('_csrfToken')
        ]);

        $panel->entry();
        exit;
    }
}

C'est tout.

Vous pouvez accéder au Panneau de Firewall à l'adresse /firewall/panel. Pour afficher la page, ouvrez cette URL dans votre navigateur.

Panneau de Contrôle

https://for.example.com/firewall/panel

L'identifiant de connexion par défaut est shieldon_user et le mot de passe est shieldon_pass. Après vous être connecté au Panneau de Firewall, la première chose à faire est de changer l'identifiant de connexion et le mot de passe.

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