Le framework Zend propose officiellement deux types de squelettes : Zend MVC et Zend Expressive.
Peu importe le squelette que vous utilisez, ce guide pourra vous donner quelques idées sur la façon de mettre en place le pare-feu Shieldon. Veuillez noter que je ne suis pas sûr de quelle méthode est considérée comme la meilleure pratique dans Zend, vous pouvez donc choisir la méthode qui vous convient le mieux.
Utilisez PHP Composer :
composer require shieldon/shieldon
Cela installera également les dépendances requises pour Shieldon :
Voici un exemple qui montre comment utiliser un middleware PSR-15 dans le squelette Zend Expressive.
Il existe une classe d'intégration prête à l'emploi pour Zend Expressive.
Dans votre fichier pipeline.php
, ajoutez cette ligne :
Exemple :
$app->pipe(\Shieldon\Firewall\Integration\ZendPsr15::class);
Accédez au répertoire App/src/Handler
et créez un fichier PHP nommé FirewallPanelHandler
.
Copiez le texte ci-dessous et collez-le dans ce fichier.
Exemple :
<?php
declare(strict_types=1);
namespace App\Handler;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
use Zend\Diactoros\Response;
/**
* Gestionnaire du panneau de pare-feu
* Si vous avez activé le CSRF, assurez-vous de transmettre le jeton CSRF au panneau de contrôle.
*/
class FirewallPanelHandler implements RequestHandlerInterface
{
public function handle(ServerRequestInterface $request): ResponseInterface
{
$panel = new \Shieldon\Firewall\Panel();
$panel->entry();
return new Response();
}
}
Dans votre fichier route.php
, ajoutez cette ligne :
Exemple :
// Début - Pare-feu Shieldon
$app->route('/firewall/panel/', App\Handler\FirewallPanelHandler::class, ['GET', 'POST']);
foreach(\Shieldon\Firewall\Panel::getRoutes() as $route) {
$app->route("/firewall/panel/$route/", App\Handler\FirewallPanelHandler::class, ['GET', 'POST']);
}
// Fin - Pare-feu Shieldon
C'est tout.
Je ne suis pas sûr de la version du framework Zend que vous utilisez, je vais donc vous donner des instructions qui fonctionnent avec la plupart des versions de Zend.
Dans votre fichier public/index.php
, juste en dessous de cette ligne :
include __DIR__ . '/../vendor/autoload.php';
Ajoutez le code suivant :
/*
|--------------------------------------------------------------------------
| Exécution du pare-feu Shieldon
|--------------------------------------------------------------------------
|
| Le pare-feu Shieldon surveillera toutes les requêtes HTTP arrivant sur votre site web.
|
*/
if (isset($_SERVER['REQUEST_URI'])) {
// Ce répertoire doit être accessible en écriture.
$storage = dirname($_SERVER['SCRIPT_FILENAME']) . '/../shieldon_firewall';
$firewall = new \Shieldon\Firewall\Firewall();
$firewall->configure($storage);
$firewall->controlPanel('/firewall/panel');
$response = $firewall->run();
if ($response->getStatusCode() !== 200) {
$httpResolver = new \Shieldon\Firewall\HttpResolver();
$httpResolver($response);
}
}
La prochaine étape consiste à créer un contrôleur pour le panneau de contrôle.
Créez un contrôleur nommé FirewallController
.
<?php
namespace Application\Controller;
use Zend\Mvc\Controller\AbstractActionController;
class FirewallController extends AbstractActionController
{
/**
* Le point d'entrée du panneau de pare-feu.
*/
public function panelAction()
{
$panel = new \Shieldon\Firewall\Panel();
$panel->entry();
}
}
Ouvrez le fichier module.config.php
situé ici :
module/Application/config/module.config.php
(3-1) À l'intérieur du tableau ['router']['routes']
, ajoutez le code suivant :
Exemple :
'firewallpanel' => [
'type' => Segment::class,
'options' => [
'route' => '/firewall/panel[:slug]',
'constraints' => [
'slug' => '[a-zA-Z0-9\/]*',
],
'defaults' => [
'controller' => Controller\FirewallController::class,
'action' => 'panel',
],
],
],
(3-2) À l'intérieur du tableau ['controllers']['factories']
, ajoutez le code suivant :
Controller\FirewallController::class => InvokableFactory::class,
C'est tout.
Vous pouvez accéder au panneau de contrôle du pare-feu en visitant /firewall/panel/
. Pour voir la page, rendez-vous sur cette URL dans votre navigateur.
https://yourwebsite.com/firewall/panel
Le login 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 login 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 correctement configuré les paramètres.