Symfony

Symfony est un ensemble de composants PHP réutilisables et un framework PHP utilisé pour construire des applications web, des API, des microservices et des services web.

Ce guide a été testé avec succès en version 4.3, mais il devrait également fonctionner avec les versions antérieures.

Symfony n'a pas de concept de middleware, vous pouvez donc créer un contrôleur parent pour implémenter le pare-feu Shieldon comme les étapes décrites dans notre guide CodeIgniter.

Si vous ne souhaitez pas initialiser le pare-feu Shieldon dans un contrôleur parent, vous pouvez suivre les étapes du mode Bootstrap fournies ci-dessous.

Pare-feu dans le framework Symfony

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.

Implémentation

Bootstrap

1. Avant d'initialiser le noyau

Dans votre fichier config/bootstrap.php, après cette ligne :

require dirname(__DIR__).'/vendor/autoload.php';

Ajoutez le code suivant :

Exemple :

/*
|--------------------------------------------------------------------------
| Exécuter le 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 = __DIR__ . '/../storage/shieldon';

    $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);
    }
}

2. Définir une route pour le panneau de contrôle du pare-feu

Créez un contrôleur nommé FirewallPanelController en exécutant la commande suivante.

Exemple :

php bin/console make:controller FirewallPanelController

Ajoutez les lignes suivantes à la classe du contrôleur FirewallPanelController :

Exemple :

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

Si vous avez le CSRF activé, ajoutez ces lignes :

Exemple :

$csrf = $this->container->get('security.csrf.token_manager');
$token = $csrf->refreshToken('key');

L'exemple complet ressemblera à ceci :

Exemple :

<?php

namespace App\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Routing\Annotation\Route;

class FirewallPanelController extends AbstractController
{
    /**
     * @Route("/firewall/panel/", name="firewall_panel")
     */
    public function panel()
    {
        $panel = new \Shieldon\Firewall\Panel();

        // Si vous avez installé `symfony/security-csrf`.
        $csrf = $this->container->get('security.csrf.token_manager');
        $token = $csrf->refreshToken('key')->getValue();

        $panel->csrf(['_token' => $token]);
        $panel->entry();
        exit;
    }

    /**
     * @Route("/firewall/panel/{class}/{method}", name="firewall_panel_page")
     */
    public function page()
    {
        $this->panel();
    }
}

C'est tout.

Vous pouvez accéder au panneau de contrôle du pare-feu via /firewall/panel. Pour voir la page, rendez-vous sur cette URL dans votre navigateur.

Panneau de contrôle

https://votresite.com/firewall/panel

Les identifiants de connexion par défaut sont 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 des paramètres du Daemon, il commencera à surveiller votre site web. Assurez-vous d'avoir correctement configuré les paramètres.