Symfony

Symfony è un insieme di componenti PHP riutilizzabili e un framework PHP utilizzato per la costruzione di applicazioni web, API, microservizi e servizi web.

Questa guida è stata testata con successo nella versione 4.3, ma dovrebbe funzionare anche con versioni più vecchie.

Symfony non ha un concetto di middleware, pertanto puoi creare un controller padre per implementare il firewall Shieldon seguendo i passaggi descritti nella nostra guida CodeIgniter.

Se non desideri inizializzare il firewall Shieldon in un controller padre, puoi seguire i passaggi della modalità Bootstrap forniti di seguito.

Firewall nel framework Symfony

Installazione

Utilizza PHP Composer:

composer require shieldon/shieldon

Ciò installerà anche le dipendenze richieste per Shieldon:

Implementazione

Bootstrap

1. Prima di inizializzare il Kernel

Nel tuo file config/bootstrap.php, dopo questa riga:

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

Aggiungi il seguente codice:

Esempio:

/*
|--------------------------------------------------------------------------
| Esegui il firewall Shieldon
|--------------------------------------------------------------------------
|
| Il firewall Shieldon monitorerà tutte le richieste HTTP in ingresso al tuo sito web.
*/
if (isset($_SERVER['REQUEST_URI'])) {

    // Questa directory deve essere scrivibile.
    $storage = __DIR__ . '/../storage/shieldon';

    $firewall = new \Shieldon\Firewall\Firewall();
    $firewall->configure($storage);

    // L'URL di base per il pannello di controllo.
    $firewall->controlPanel('/firewall/panel/');

    $response = $firewall->run();

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

2. Definisci un percorso per il pannello di controllo del firewall

Crea un controller chiamato FirewallPanelController eseguendo il seguente comando.

Esempio:

php bin/console make:controller FirewallPanelController

Aggiungi le seguenti righe nella classe del controller FirewallPanelController:

Esempio:

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

Se hai CSRF abilitato, aggiungi queste righe:

Esempio:

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

L'esempio completo sarà così:

Esempio:

<?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();

        // Se hai installato `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();
    }
}

Questo è tutto.

Puoi accedere al pannello di controllo del firewall tramite /firewall/panel. Per visualizzare la pagina, visita questo URL nel tuo browser.

Pannello di Controllo

https://iltuosito.com/firewall/panel

Le credenziali di accesso predefinite sono shieldon_user e la password è shieldon_pass. Dopo aver effettuato l'accesso al pannello di controllo del firewall, la prima cosa da fare è cambiare nome utente e password.

Se il firewall Shieldon è abilitato nella sezione delle impostazioni del Daemon, inizierà a monitorare il tuo sito web. Assicurati di avere configurato correttamente le impostazioni.