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.
Utilisez PHP Composer :
composer require shieldon/shieldon
Cela installera également les dépendances requises pour Shieldon :
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);
}
}
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.
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.