Questa guida ti aiuterà a implementare il firewall Shieldon nella tua applicazione Laravel. I seguenti passaggi sono stati testati su Laravel 5 e 6.
Questi consigli non sono l'unico modo per farlo, ma ti offrono anche alcune idee.
Utilizza PHP Composer:
composer require shieldon/shieldon
Questo installerà anche le dipendenze necessarie per Shieldon:
Puoi utilizzare Shieldon come middleware o implementare Shieldon nella fase di bootstrap della tua applicazione web.
Inizializza Shieldon nella fase di bootstrap della tua applicazione, preferibilmente subito dopo aver incluso l'autoloader di Composer. In questo modo si evitano possibili conflitti con le funzioni incorporate di Laravel.
Nel tuo file bootstrap/app.php
, dopo <?php
, aggiungi il seguente codice.
/*
|--------------------------------------------------------------------------
| Esegui il firewall Shieldon
|--------------------------------------------------------------------------
|
| Il firewall Shieldon monitorerà tutte le richieste HTTP che arrivano al tuo sito web.
| Eseguire il firewall Shieldon prima di inizializzare Laravel evita possibili conflitti
| con le funzioni incorporate di Laravel.
*/
if (isset($_SERVER['REQUEST_URI'])) {
// Questa directory deve avere i permessi di scrittura.
// La mettiamo nella directory `storage/shieldon_firewall`.
$storage = __DIR__ . '/../storage/shieldon_firewall';
$firewall = new \Shieldon\Firewall\Firewall();
$firewall->configure($storage);
// L'URL di base per il pannello di controllo.
$firewall->controlPanel('/firewall/panel/');
$response = $firewall->run();
if ($response->getStatusCode() !== 200) {
$httpResolver = new \Shieldon\Firewall\HttpResolver();
$httpResolver($response);
}
}
Aggiungi la seguente route al tuo file routes/web.php
:
Route::any('/firewall/panel/{path?}', function() {
$panel = new \Shieldon\Firewall\Panel();
$panel->csrf(['_token' => csrf_token()]);
$panel->entry();
})->where('path', '(.*)');
Se adotti questo metodo, il firewall Shieldon verrà eseguito nell'ambito globale. Tuttavia, puoi configurare una lista di esclusioni per gli URL che desideri che il firewall Shieldon ignorino.
Puoi definire un middleware personalizzato o utilizzare la classe di integrazione fornita.
Se scegli di utilizzare la classe di integrazione, salta il passaggio 1 e vai al passaggio 2-2.
Esegui il seguente comando per creare un middleware chiamato ShieldonFirewall
:
php artisan make:middleware ShieldonFirewall
Successivamente, aggiorna il metodo handle
della classe middleware ShieldonFirewall
con il seguente codice:
<?php
namespace App\Http\Middleware;
use Closure;
class ShieldonFirewall
{
/**
* Gestisci una richiesta in arrivo.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
$firewall = new \Shieldon\Firewall\Firewall();
// La directory in cui il firewall Shieldon collocherà i suoi file.
$storage = storage_path('shieldon_firewall');;
$firewall->configure($storage);
// URL di base per il pannello di controllo.
$firewall->controlPanel('/firewall/panel/');
$firewall->getKernel()->setCaptcha(
new Csrf([
'name' => '_token',
'value' => csrf_token(),
])
);
$response = $firewall->run();
if ($response->getStatusCode() !== 200) {
$httpResolver = new \Shieldon\Firewall\HttpResolver();
$httpResolver($response);
}
return $next($request);
}
}
Aggiorna il file app/Http/Kernel.php
e aggiungi la seguente riga alla proprietà $routeMiddleware
:
Per il passaggio 2-1:
'firewall' => \App\Http\Middleware\ShieldonFirewall::class,
Per il passaggio 2-2 (utilizzo della classe di integrazione):
Se utilizzi la classe di integrazione, il codice sarà così:
'firewall' => \Shieldon\Firewall\Integration\Laravel::class,
Aggiungi la seguente route al tuo file routes/web.php
:
Route::any('/firewall/panel/{path?}', function() {
$panel = new \Shieldon\Firewall\Panel();
$panel->csrf(['_token' => csrf_token()]);
$panel->entry();
})->where('path', '(.*)');
Il firewall Shieldon inizierà a monitorare il tuo sito web se abilitato nella sezione delle impostazioni del Daemon
. Assicurati di aver configurato correttamente le impostazioni.