Slim

Slim è uno dei miei framework preferiti. Poiché Slim è un micro-framework, l'implementazione del firewall Shieldon è anche semplice. Senza ulteriori indugi, iniziamo.

Firewall in Slim Framework

Installazione

Utilizza PHP Composer:

composer require shieldon/shieldon

Ciò installerà anche le dipendenze richieste per Shieldon:

  • shieldon/psr-http L'implementazione PSR-7, 15, 17 con documentazione completa e test approfonditi.
  • shieldon/event-dispatcher Il dispatcher eventi più semplice.
  • shieldon/web-security Una raccolta di funzioni legate alla sicurezza web.
  • shieldon/messenger Una collezione di moduli per l'invio di messaggi a API o servizi di terze parti, come Telegram, Line, RocketChat, Slack, SendGrid, MailGun e altro ancora.

Implementazione

Slim 4

(1) Creare un Middleware per il firewall.

È possibile creare un middleware personalizzato o utilizzare la classe di integrazione.

Esempio:

class FirewallMiddleware
{
    /**
     * Esempio di classe invocabile per il Middleware
     *
     * @param ServerRequest  $request Richiesta PSR-7
     * @param RequestHandler $handler Gestore richieste PSR-15
     *
     * @return Response
     */
    public function __invoke(Request $request, RequestHandler $handler): Response
    {
        $response = $handler->handle($request);

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

        // La directory in cui Shieldon Firewall posizionerà i suoi file.
        $firewall->configure(__DIR__ . '/../cache/shieldon_firewall');
        $response = $firewall->run();

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

        return $response;
    }
}

(2) Aggiungere il Middleware del firewall nella tua applicazione.

Ad esempio, se stai utilizzando il framework Slim 4, il codice dovrebbe apparire così.

Esempio:

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

Oppure, se preferisci utilizzare la classe di integrazione, ecco il codice.

Esempio:

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

(3) Creare una Route per il Pannello di Controllo.

Ad esempio, se stai utilizzando il framework Slim 4, il codice dovrebbe apparire così. Successivamente, puoi accedere all'URL https://il-tuo-sito.com/firewall/panel/ per effettuare l'accesso al pannello di controllo.

Esempio:

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

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

    // La directory in cui Shieldon Firewall posizionerà i suoi file.
    // Deve essere la stessa del middleware del firewall.
    $firewall->configure(__DIR__ . '/../cache/shieldon_firewall');

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

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

    // Inizio - Impostare i campi CSRF se hai abilitato Slim-CSRF

    $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]
    );

    // Fine - Slim-CSRF

    $panel->entry();
});

Nota:

  • I metodi HTTP POST e GET devono essere applicati entrambi al tuo sito web.
  • Il metodo POST è necessario per risolvere i CAPTCHA per gli utenti temporaneamente bloccati.

Questo è tutto.

Slim 3

(1) Aggiungere il Middleware del firewall nella tua applicazione.

Shieldon ha una classe di integrazione pronta per questo middleware, basta utilizzarla seguendo il passo seguente.

Esempio:

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

Ad esempio, se stai utilizzando il modello Slim 3, il codice in middleware.php sarà simile a questo:

Esempio:

<?php

use Slim\App;

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

(2) Creare una Route per il Pannello di Controllo.

Ad esempio, se stai utilizzando il framework Slim 4, il codice dovrebbe apparire così. Successivamente, puoi accedere all'URL https://il-tuo-sito.com/firewall/panel/ per effettuare l'accesso al pannello di controllo.

Esempio:

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

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

    // La directory in cui Shieldon Firewall posizionerà i suoi file.
    // Deve essere la stessa del middleware del firewall.
    $firewall->configure(__DIR__ . '/../cache/shieldon_firewall');

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

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

    // Inizio - Impostare i campi CSRF se hai abilitato Slim-CSRF

    $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]
    );

    // Fine - Slim-CSRF

    $panel->entry();
});

Questo è tutto.

Pannello di Controllo

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

https://il-tuo-sito.com/firewall/panel/

Il nome utente predefinito è shieldon_user e la password è shieldon_pass. Dopo aver effettuato l'accesso al Pannello di Controllo del Firewall, la prima cosa da fare è cambiare il nome utente e la password.

Se il Firewall Shieldon è abilitato nella sezione di configurazione Daemon, inizierà a monitorare il tuo sito web. Assicurati di aver configurato correttamente le impostazioni.