Symfony ist eine Sammlung von wiederverwendbaren PHP-Komponenten und ein PHP-Framework zur Erstellung von Webanwendungen, APIs, Microservices und Webdiensten.
Dieser Leitfaden wurde erfolgreich in Version 4.3
getestet, sollte jedoch auch mit älteren Versionen funktionieren.
Symfony hat kein Middleware-Konzept. Sie können jedoch einen übergeordneten Controller erstellen, um das Shieldon Firewall genauso zu implementieren wie in unserem CodeIgniter-Leitfaden.
Wenn Sie Shieldon Firewall nicht in einem übergeordneten Controller initialisieren möchten, können Sie den unten angegebenen Bootstrap-Modus verwenden.
Verwenden Sie PHP Composer:
composer require shieldon/shieldon
Dadurch werden auch die für Shieldon erforderlichen Abhängigkeiten installiert:
Fügen Sie in Ihrer config/bootstrap.php
-Datei nach dieser Zeile den folgenden Code hinzu:
Beispiel:
require dirname(__DIR__).'/vendor/autoload.php';
/*
|--------------------------------------------------------------------------
| Shieldon Firewall ausführen
|--------------------------------------------------------------------------
|
| Die Shieldon Firewall überwacht alle eingehenden HTTP-Anfragen auf Ihrer Website.
*/
if (isset($_SERVER['REQUEST_URI'])) {
// Dieses Verzeichnis muss beschreibbar sein.
$storage = __DIR__ . '/../storage/shieldon';
$firewall = new \Shieldon\Firewall\Firewall();
$firewall->configure($storage);
// Die Basis-URL für das Kontrollpanel.
$firewall->controlPanel('/firewall/panel/');
$response = $firewall->run();
if ($response->getStatusCode() !== 200) {
$httpResolver = new \Shieldon\Firewall\HttpResolver();
$httpResolver($response);
}
}
Erstellen Sie einen Controller mit dem Namen FirewallPanelController
, indem Sie den folgenden Befehl ausführen.
Beispiel:
php bin/console make:controller FirewallPanelController
Fügen Sie die folgenden Zeilen der Controllerklasse FirewallPanelController
hinzu:
Beispiel:
$panel = new \Shieldon\Firewall\Panel();
$panel->entry();
Wenn CSRF aktiviert ist, fügen Sie diese Zeilen hinzu:
Beispiel:
$csrf = $this->container->get('security.csrf.token_manager');
$token = $csrf->refreshToken('key');
Das vollständige Beispiel sieht wie folgt aus:
Beispiel:
<?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();
// Wenn `symfony/security-csrf` installiert ist.
$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();
}
}
Das war's.
Sie können auf das Firewall-Kontrollpanel über /firewall/panel
zugreifen. Um die Seite anzuzeigen, besuchen Sie diese URL in Ihrem Browser.
https://yourwebsite.com/firewall/panel
Die Standard-Anmeldedaten sind shieldon_user
für den Benutzernamen und shieldon_pass
für das Passwort. Nach dem Einloggen in das Firewall-Kontrollpanel sollten Sie als erstes den Benutzernamen und das Passwort ändern.
Wenn die Shieldon Firewall in den Einstellungen für den Daemon
aktiviert ist, überwacht sie Ihre Website. Stellen Sie sicher, dass Sie die Einstellungen korrekt konfiguriert haben.