Slim è uno dei miei framework preferiti. Poiché Slim è un micro-framework, l'implementazione del firewall Shieldon è anche semplice. Senza ulteriori indugi, iniziamo.
Utilizza PHP Composer:
composer require shieldon/shieldon
Ciò installerà anche le dipendenze richieste per Shieldon:
È 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;
}
}
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);
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:
POST
e GET
devono essere applicati entrambi al tuo sito web.POST
è necessario per risolvere i CAPTCHA per gli utenti temporaneamente bloccati.Questo è tutto.
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);
};
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.
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.