Symfony

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.

Firewall in Symfony Framework

Installation

Verwenden Sie PHP Composer:

composer require shieldon/shieldon

Dadurch werden auch die für Shieldon erforderlichen Abhängigkeiten installiert:

  • shieldon/psr-http Die Implementierung von PSR-7, 15, 17 mit vollständiger Dokumentation und umfangreichen Tests.
  • shieldon/event-dispatcher Der einfachste Event-Dispatcher.
  • shieldon/web-security Eine Sammlung von Funktionen im Zusammenhang mit der Web-Sicherheit.
  • shieldon/messenger Eine Sammlung von Modulen zum Senden von Nachrichten an Drittanbieter-APIs oder -Dienste wie Telegram, Line, RocketChat, Slack, SendGrid, MailGun und mehr.

Implementierung

Bootstrap

1. Vor der Initialisierung des Kernels

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

2. Routendefinition für das Firewall-Kontrollpanel

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.

Kontrollpanel

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.