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.
Utilizza PHP Composer:
composer require shieldon/shieldon
Ciò installerà anche le dipendenze richieste per Shieldon:
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);
}
}
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.
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.