Slim

Slim Framework ist einer meiner Favoriten. Da Slim ein Micro-Framework ist, ist die Implementierung der Shieldon Firewall ebenfalls einfach. Ohne weitere Verzögerung, lassen Sie uns beginnen.

Firewall in Slim Framework

Installation

Verwenden Sie PHP Composer:

composer require shieldon/shieldon

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

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

Implementierung

Slim 4

(1) Erstellen Sie eine Firewall-Middleware.

Sie können eine Middleware selbst erstellen oder einfach die Integrationsklasse verwenden.

Beispiel:

class FirewallMiddleware
{
    /**
     * Beispiel Middleware-Aufrufklasse
     *
     * @param ServerRequest  $request PSR-7-Anfrage
     * @param RequestHandler $handler PSR-15-Anfrage-Handler
     *
     * @return Response
     */
    public function __invoke(Request $request, RequestHandler $handler): Response
    {
        $response = $handler->handle($request);

        $firewall = new \Shieldon\Firewall\Firewall($request, $response);

        // Das Verzeichnis, in dem die Shieldon Firewall ihre Dateien ablegen wird.
        $firewall->configure(__DIR__ . '/../cache/shieldon_firewall');
        $response = $firewall->run();

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

        return $response;
    }
}

(2) Fügen Sie die Firewall-Middleware in Ihre Anwendung ein.

Wenn Sie zum Beispiel das Slim 4-Framework verwenden, sollte der Code wie folgt aussehen.

Beispiel:

$app->add(new FirewallMiddleware());

Oder wenn Sie die Integrationsklasse bevorzugen, hier ist der Code.

Beispiel:

$app->add(new \Shieldon\Firewall\Integration\Slim4);

(3) Erstellen Sie eine Route für das Kontrollpanel.

Wenn Sie zum Beispiel das Slim 4-Framework verwenden, sollte der Code wie folgt aussehen. Sie können dann auf die URL https://ihrewebseite.com/firewall/panel/ zugreifen, um sich am Kontrollpanel anzumelden.

Beispiel:

$app->any('/firewall/panel[/{params:.*}]', function (Request $request, Response $response, $args) {

$firewall = new \Shieldon\Firewall\Firewall($request);

    // Das Verzeichnis, in dem die Shieldon Firewall ihre Dateien ablegen wird.
    // Muss dem Firewall-Middleware-Verzeichnis entsprechen.
    $firewall->configure(__DIR__ . '/../cache/shieldon_firewall');

    // Die Basis-URL für das Kontrollpanel.
    $firewall->controlPanel('/firewall/panel/');

    $panel = new \Shieldon\Firewall\Panel();

    // Beginn - CSRF-Felder einrichten, wenn Sie Slim-CSRF aktiviert haben

    $csrf = new \Slim\Csrf\Guard();
    $nameKey = $csrf->getTokenNameKey();
    $valueKey = $csrf->getTokenValueKey();

    $csrfName = $request->getAttribute('csrf_name');
    $csrfVale = $request->getAttribute('csrf_value');

    $panel->csrf(
        [$nameKey => $csrfName],
        [$valueKey => $csrfVale]
    );

    // Ende - Slim-CSRF

    $panel->entry();
});

Hinweis:

  • Die HTTP-Methoden POST und GET sollten beide auf Ihrer Webseite verwendet werden.
  • Die POST-Methode ist erforderlich, um von vorübergehend blockierten Benutzern CAPTCHA zu lösen.

Das ist alles.

Slim 3

(1) Fügen Sie die Firewall-Middleware in Ihre Anwendung ein.

Für diese Middleware hat Shieldon bereits eine Integrationsklasse bereitgestellt. Verwenden Sie sie einfach gemäß den folgenden Schritten.

Beispiel:

$app->add(new \Shieldon\Firewall\Integration\Slim3);

Wenn Sie zum Beispiel das Slim3-Skelett verwenden, sieht der Code in middleware.php wie folgt aus:

Beispiel:

<?php

use Slim\App;

return function (App $app) {
    $app->add(new \Shieldon\Firewall\Integration\Slim3);
    $app->add(new \Slim\Csrf\Guard);
};

(2) Erstellen Sie eine Route für das Kontrollpanel.

Wenn Sie zum Beispiel das Slim 4-Framework verwenden, sollte der Code wie folgt aussehen. Sie können dann auf die URL https://ihrewebseite.com/firewall/panel/ zugreifen, um sich am Kontrollpanel anzumelden.

Beispiel:

$app->map(['GET', 'POST'], '/firewall/panel[/{params:.*}]', function (Request $request, Response $response, array $args) {

    $firewall = new \Shieldon\Firewall\Firewall($request);

    // Das Verzeichnis, in dem die Shieldon Firewall ihre Dateien ablegen wird.
    // Muss dem Firewall-Middleware-Verzeichnis entsprechen.
    $firewall->configure(__DIR__ . '/../cache/shieldon_firewall');

    // Die Basis-URL für das Kontrollpanel.
    $firewall->controlPanel('/firewall/panel/');

    $panel = new \Shieldon\Firewall\Panel();

    // Beginn - CSRF-Felder einrichten, wenn Sie Slim-CSRF aktiviert haben

    $csrf = new \Slim\Csrf\Guard();
    $nameKey = $csrf->getTokenNameKey();
    $valueKey = $csrf->getTokenValueKey();

    $csrfName = $request->getAttribute('csrf_name');
    $csrfVale = $request->getAttribute('csrf_value');

    $panel->csrf(
        [$nameKey => $csrfName],
        [$valueKey => $csrfVale]
    );

    // Ende - Slim-CSRF

    $panel->entry();
});

Das ist alles.

Kontrollpanel

Sie können auf das Firewall-Kontrollpanel über /firewall/panel/ zugreifen. Um die Seite anzuzeigen, geben Sie diese URL in Ihren Browser ein.

https://ihrewebseite.com/firewall/panel/

Der Standard-Login ist shieldon_user und das Passwort ist shieldon_pass. Nachdem Sie sich im Firewall-Kontrollpanel angemeldet haben, sollten Sie als Erstes den Login und das Passwort ändern.

Wenn die Shieldon Firewall in der Einstellung Daemon aktiviert ist, beginnt sie mit der Überwachung Ihrer Webseite. Stellen Sie sicher, dass Sie die Einstellungen korrekt konfiguriert haben.